2015-04-27 6 views

ответ

1

Я думаю, что лучше иметь такую ​​же структуру как на сервере, так и на клиенте. Вы можете создать класс с x, y членами с именем «Внутренний» и «внутренний» может быть членом внешнего ключа в вашем исходном классе.

Чтобы ответить на этот вопрос, вы можете переопределить функцию создания:

class InnerSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Inner 
     fields = ('x', 'y') 


class CostumeSerializer(serializers.ModelSerializer): 

    inner = InnerSerializer() 

    class Meta: 
     model = MyModel 
     fields = ('code', 'inner') 

    def create(self, validated_data): 
     inner = validated_data.pop('inner') 
     return MyModel.objects.create(inner_x=inner.get('x', None), inner_y=inner.get('y', None), **validated_data) 
  • Это пример кода - я не запустить его

EDIT: гляньте here

Вы можете определить InnerSerializer без такой модели:

from rest_framework import serializers 

class CommentSerializer(serializers.Serializer): 
    email = serializers.EmailField() 
    content = serializers.CharField(max_length=200) 
    created = serializers.DateTimeField() 
+0

Я хочу сделать это без модели django. Данные поступают ко мне из внешней службы, и я хочу установить правила для преобразования из одного json в другой. – okuznetsov

1

Вы ищете что-то наподобие this?

Где вы переопределяете .to_internal_value() для десериализации и .to_representation() для сериализации.

+0

Я нашел эту библиотеку http://marshmallow.readthedocs.org/en/latest/custom_fields.html#function-fields полезным – okuznetsov

Смежные вопросы