잘 나는 여기에 여러 possibilites를 참조하십시오
다음
def post(self, request, format=None):
serializer = SnippetSerializer(data=request.data,context={'request': request})
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
시리얼 내부 :
class SnippetSerializer(serializers.IDontKnow):
class Meta:
model = YourModel
fields = ('url', 'field1','field2','field3')
write_only_fields =()
def __init__(self, *args, **kwargs):
super(SnippetSerializer, self).__init__(*args, **kwargs)
if self.context != {}:
request = self.context['request']
if request.method == 'POST':
self.write_only_fields = {'field1':self.fields['field1'], 'field3':self.fields['field3']}
먼저 (내가 좋아하는)는 다음 시리얼 라이저는 dynamiccly하여 원하는 필드를 선택합니다 시리얼에 요청 객체를 보낼 수있다
이렇게하면 field1 및 field3을 쓸 수있게 만들어야하므로 반환되지 않습니다.
class PostSnippetSerializer(serializers.IDontKnow):
class Meta:
model = YourModel
fields = ('url', 'field1','field2','field3')
write_only_fields = ('field1','field3')
필드 1과 필드 : 당신은 당신이 재곡 할 거예요 해달라고하는 필드를 지정할 수 있습니다
def post(self, request, format=None):
serializer = PostSnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
:
둘째, 어쩌면 쉽게 가능성은 포스트 방법에 대해 고유 한 다른 시리얼 라이저를 정의하는 것입니다 3 응답에 반환되지 않습니다
세 번째 방법은 직접보기에서 응답을 작성하는 것입니다.
def post(self, request, format=None):
serializer = SnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
results = {'url': serializer.data['url'],'field2':serializer.data['field2']}
return Response(results, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
이렇게하면 url과 field2 만 반환되므로 field1과 field3은 저장되지만 반환되지는 않습니다. 같은 질문을 가진 다른 사람들을위한