2016-04-05 3 views
1

私はポストモデルと識別子モデルを持っています。ポストのPKは識別子のFKであるため、どちらも関連しています。ポストテーブルからデータを返す間に、識別子テーブルのデータも返す必要があります。どのように効率的に行うことができますか? Identifierモデルのシリアライザを指すPostモデルのシリアライザ、上nested relationshipdjango rest frameworkシリアライザでは、外部キーテーブルとメインテーブルのデータをどうやって返すことができますか?

models.py

class SharedIdentifier(models.Model): 
    post = models.ForeignKey('post.Post',related_name='ref_posts', on_delete=models.CASCADE) 
    label = models.CharField(max_length=32) 
    value = models.CharField(max_length=50) 

serializers.py

class SharedIdentifierSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = SharedIdentifier 
     fields = ('id', 'post', 'label', 'value',) 
     read_only_fields = ('post') 

class PostSerializer(serializers.ModelSerializer): 
    author = UserSerializer(required=False,) 
    ref_user = UserSerializer(read_only=True) 
    ref_user_id = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), write_only=True, source='ref_user') 

    identifier = serializers.CharField(max_length=32, write_only=True) 
    identifier_info = SharedIdentifierSerializer(required=False,many=True,read_only=True) 

    class Meta: 
     model = Post 
     fields = ('id', 'author', 'ref_user', 'ref_user_id', 'status', 'message', 'type', 'parent_id', 'rating', 'create_date', 'close_date','identifier','identifier_info',) 
     read_only_fields = ('status', 'close_date', 'author', 'ref_user','identifier_info', 
+0

モデルコードを掲載することはできますか?あなたのモデルの関係を理解し​​ているかわかりません –

+0

モデルコードを追加しました。 –

+2

identifier_infoシリアライザフィールドに 'source = ref_posts'を追加してみてください。あなたが望むデータを探す場所が分からないように見えます。 –

答えて

1

+0

質問をコードで更新しました。私はこの方法で試しましたが、identifier_infoは返されませんでした。 –