2016-12-19 9 views
0

次のコードでは、templateは外部キーです。テンプレートはシリアライザを質問するシリアライザをネストしたものです。私が表示したい何djangoの残りのシリアライザのフィールドをシリアライザに配置するにはどうすればよいですか?

[{ 
     "pk": 15, 
     "template": { 
      "question_type": 1, 
      "question": "What is your age ?", 
      "answer_type": 1, 
      "available_choices": [] 
     }, 
     "order": 1, 
     "mandatory": true 
    }] 

は次のとおりです。

[ 
{ 
    "pk": 15, 
    "question_type": 1, 
    "question": "What is your age?", 
    "order": 1, 
    "answer_type": 1, 
    "mandatory": true, 
    "available_choices": [] 
}] 

私はこのようなネストされたシリアライザのデータフィールドを表示するにはどうすればよいですか?

これは私のシリアライザクラスです:

class TemplateSerializer(serializers.ModelSerializer): 
    available_choices = ChoiceSerializer(many=True) 

    class Meta: 
     model = Template 
     fields = (
      'question_type', 'question', 'answer_type', 
      'available_choices' 
     ) 
class ASerializer(serializers.ModelSerializer): 
    template = TemplateSerializer() 

    class Meta: 
     model = A 
     fields = (
      'pk', 'template', 'order', 'mandatory' 
     ) 
+0

カスタムシリアライザを作成してください。 –

答えて

0

は、カスタムがあなたのシリアライザに()とupdate()関数を作成する定義されたと仮定します。

class ASerializer(serializers.ModelSerializer): 

    question_type = serializers.ReadOnlyField(source='template.question_type', read_only=True) 
    question = serializers.ReadOnlyField(source='template.question', read_only=True) 
    answer_type = serializers.ReadOnlyField(source='template.answer_type', read_only=True) 
    available_choices = serializers.ReadOnlyField(source='template.available_choices', read_only=True) 

    class Meta: 
     model = A 
+0

ありがとう、それは働いた。私は 'serializers.Field()'で試していました。 –

関連する問題