0

私のjson出力では、m2mフィールドattribute_answersでキーと値のペアを取得していないようです。以下のコードを参照してください。attribute_answers フィールドに追加するにはどうすればよいですか?

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
    ]
}

シリアライザ

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)
4

1 に答える 1

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"}
    ]
}
于 2013-02-19T21:37:10.443 に答える