최근에 시리얼 라이저에 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__')
models.py의 fieldName은 IntegerFie입니다. 선택권을 가진 ld? – Ykh
그 특정 필드를'required = False'로 설정할 수 있습니다. –
문제는 모델에 있다고 생각하지 않습니다. 나는 그것이 시리얼 라이저와 같다고 생각합니다. 기본적으로 내 목표는 "get_FOO_display"를 JSON으로 렌더링하는 것입니다.하지만 내 질문에 언급 된 코드 행을 추가하여 동일한 직렬 변환기를 사용하여 더 이상 POST 데이터를 포스팅 할 수 없습니다. 어쩌면 빠른 수정은 두 개의 다른 serializer를 사용하는 것일까 요? 하나는 게시자 용이고 다른 하나는 게시 용입니까? 나는 그것에 대해 어떻게 가야할지 모르겠다. – user8951490