2016-08-23 4 views
1

장고 - 나머지 프레임 워크에 GUID를 대신 ID를 관련 장고 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을 작동하지 않는 것 : 만이 특별한 직렬화가 GET에 적용하기 위해 (세부 사항) 및 목록 호출합니다.

문제점 2 : 초청자와 초대받은 사람을 올바르게 구분하고 있습니까? 왜냐하면 내가 to_representation 메소드 값에 들어갔을 때 값은 두 번 모두 같은 것입니다.

답변

0

1)은 뷰셋에이 같은 get_serializer_class를 재정 의하여 당 방법 serializer를 제공 할 수 있습니다 :이 같은

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') 
관련 문제