2016-08-23 10 views
1

ジャンゴ・休憩・フレームワークでのGUIDの代わりのIDを関連Django Restフレームワーク。ここに私の最初の試みだったが、戻り、私は以下の持っているモデルがありシリアライズ

class InviteListingField(serializers.RelatedField): 
    def to_representation(self, value): 
     return value.usermetadata.guid 

class TeamInviteSerializer(serializers.ModelSerializer): 
    lookup_field = 'guid' 
    inviter = InviteListingField(read_only=True) 
    invitee = InviteListingField(read_only=True) 
    class Meta: 
     model = TeamInvite 
     fields = ('guid', 'inviter', 'invitee', 'team' 

を動作するようには思えない)

問題1:私だけ(詳細)を取得するために適用するには、この特別な連載をしたいとリストを呼び出します。

問題2:招待者と招待者を適切に区別していますか?私がto_representationメソッドの値に入ると、その値は同じことです。

答えて

0

1)あなたは、ビューセットにこのような何かget_serializer_classをオーバーライドすることで、メソッドごとのシリアライザを提供することができます。このよう

def get_serializer_class(self): 
    if self.action == 'retrieve': 
     return CreateSerializer 
    else: 
     return super().get_serializer_class() 

2)あなたは、サブオブジェクトからserialiezrフィールドをマップすることができ、何かを:

class TeamInviteSerializer(serializers.ModelSerializer): 
    lookup_field = 'guid' 
    inviter = UUIDField(read_only=True, source='inviter.guid') 
    invitee = UUIDField(read_only=True, source='invitee.guid') 
関連する問題