2013-02-19 2 views
0

На моем выходе json я, похоже, не получаю пары ключевого значения на поле m2mans_answers. см. код ниже. Как добавить в поля attribute_answers?Django REST Метаданные для M2M отсутствуют

JSON
{ 
    "id": 20, 
    "name": "Jake", 
    "active": true, 
    "type": { 
     "id": 1, 
     "name": "Human", 
     "active": true, 
     "created": "2013-02-12T13:31:06Z", 
     "modified": null 
    }, 
    "user": "jason", 
    "attribute_answers": [ 
     1, 
     2 
    ] 
} 

Serializer

class ProfileSerializer(serializers.ModelSerializer): 
    user = serializers.SlugRelatedField(slug_field='username') 
    attribute_answers = serializers.PrimaryKeyRelatedField(many=True) 

    class Meta: 
     model = Profile 
     depth = 2 
     fields = ('id', 'name', 'active', 'type', 'user', 'attribute_answers') 

    def restore_object(self, attrs, instance=None): 
     """ 
     Create or update a new snippet instance. 

     """ 
     if instance: 
      # Update existing instance 
      instance.name = attrs.get('name', instance.name) 
      instance.active = attrs.get('active', instance.active) 
      instance.type = attrs.get('type', instance.type) 
      instance.attribute_answers = attrs.get('attribute_answers', instance.attribute_answers) 
      return instance 

     # Create new instance 
     return Profile(**attrs) 

ответ

2

Если я правильно понимаю ваш вопрос, вы хотите Nested Relationship. В вашем ProfileSerializer, вы хотите:

attribute_answers = AttributeAnswerSerializer(many=True) 

Это будет отображать все атрибуты каждой ассоциированной attribute_answer модели и дать вам что-то вроде:

{ 
    "id": 20, 
    "name": "Jake", 
    "active": true, 
    "type": { 
     "id": 1, 
     "name": "Human", 
     "active": true, 
     "created": "2013-02-12T13:31:06Z", 
     "modified": null 
    }, 
    "user": "jason", 
    "attribute_answers": [ 
     {"id": 1, "foo": "bar"}, 
     {"id": 2, "foo": "bar2"} 
    ] 
} 

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

  • Нет связанных вопросов^_^