Я хотел бы десериализации этого JSON:Джанго рамка остальных объекты Deserialize на основе пользовательского класса
json1 = {
"age" : "22",
"name" : "Bob",
"lastname" : "Andrew",
"contactList" : [
{ "friend" : "Alice"},
{ "friend" : "John"}
]}
Я создал следующие классы (я не хочу создавать любые модели, так как я не заинтересован в сохранении их в база данных):
class Friend(object):
def __init__(self, friend):
self.friend = friend
class Person(object):
def __init__(self, age , name , lastname, contactList):
self.age=age
self.name = name
self.lastname = lastname
self.contactList= [] #possible error here
и следующие сериализаторов:
class FriendSeriliazer(serializers.Serializer):
friend = serializers.CharField()
def create(self, validated_data):
return Friend(**validated_data)
class PersonSerializer(serializers.Serializer):
age = serializers.CharField()
name = serializers.CharField()
lastname = serializers.CharField()
contactList = FriendSerializer(many=True)
def create(self, validated_data):
print validated_data
simple = Person(**validated_data)
contactList = self.validated_data.pop('contactList')
for friend in contactList:
serializer = FriendSerializert(data=friend)
if serializer.is_valid(raise_exception=True):
person.contactList.append(serializer.save())
return person
плазменном T метод с точки зрения:
parsedData = PersonSerializer(data=request.data)
person = parsedData.save()
print person.contactList[0].friend #<-- nested object should be present
return Response(request.data, status=status.HTTP_200_OK)
Я использовал DRF documentation для этого
Проблемы в том, что в то время как это работает мне нужна десериализация гораздо более сложная JSON и перебор внутренних объектов в создании функции ISN Не собираюсь это отрезать. Есть ли более автоматизированный способ?
почему реализовать 'create' метод, если вы не хотите, чтобы спасти их? –
Я начал без него, но потом получил исключение. «NotImplementedError: create() должно быть реализовано». –