2017-12-10 2 views
0

최근에 시리얼 라이저에 source='get_fieldname_display을 추가했습니다. 그것은 choices 튜플의 표시 값을 취득하기위한 목적으로 완벽하게 작동하지 않습니다하지만 지금은 더 이상 오류 점점없이 API 엔드 포인트를 사용하여 POST 데이터 수, 시리얼에 추가Django Rest Framework : 직렬화 기에서 get_FOO_display를 실행하지 못함 POST

TypeError: 'get_fieldname_display' is an invalid keyword argument for this function 

이 명확하게하기 위해이었다 이 줄은 특별히 :

내가이 줄을 주석 처리 할 때 문제없이 문제를 일으킬 수 있다는 것을 알고 있습니다. 그러나 데이터를 얻으려고 할 때이 줄이 필요하므로 choices 튜플의 표시 이름을 얻을 수 있습니다.

내가 두 개의 다른 serializer, 하나의 POST에 대한 다른 serializers를 사용하는 경우 문제가 해결 될 수 있지만 어떻게에 대해 가야할지 잘 모르겠습니다 - 내 views.py generics.ListCreateAPIView 사용하고 있습니다.

편집 :

내 모델은 다음과 같습니다

class MakeObjects(models.Model): 

    FIELD_NAME_CHOICES = (
     ("01", "Choice 1"), 
     ("02", "Choice 2"), 
    ) 

    fieldname = CharField(choices = FIELD_NAME_CHOICES) 

내 시리얼 라이저는 다음과 같습니다

read_only_fields = ['fieldName'] 
:
class ObjectSerializer(serializers.ModelSerializer): 
     fieldname = serializers.CharField(source='get_fieldname_display') 
     class Meta: 
      model = MakeObjects 
      fields = ('__all__') 
+0

models.py의 fieldName은 IntegerFie입니다. 선택권을 가진 ld? – Ykh

+0

그 특정 필드를'required = False'로 설정할 수 있습니다. –

+0

문제는 모델에 있다고 생각하지 않습니다. 나는 그것이 시리얼 라이저와 같다고 생각합니다. 기본적으로 내 목표는 "get_FOO_display"를 JSON으로 렌더링하는 것입니다.하지만 내 질문에 언급 된 코드 행을 추가하여 동일한 직렬 변환기를 사용하여 더 이상 POST 데이터를 포스팅 할 수 없습니다. 어쩌면 빠른 수정은 두 개의 다른 serializer를 사용하는 것일까 요? 하나는 게시자 용이고 다른 하나는 게시 용입니까? 나는 그것에 대해 어떻게 가야할지 모르겠다. – user8951490

답변

0

당신의 새로운 필드를 추가 시도 할 수 있습니다

관련 문제