POST 메서드에서 field1
, field2
, field3
의 세 필드가 있다고 가정 해 봅시다. POST 메서드 field2
및 field3
은 데이터베이스에 추가하는 동안 동일한 값을 가져야합니다. 따라서 예를 들어 field2=2
, field3=2
을 수동으로 추가 할 필요가 없습니다. field1=1
, field2=2
만 추가하면 field3=2
이 자동으로이 본문에 추가되고 마지막으로 전체 필드 3 개가 데이터베이스에 추가됩니다. 가장 최적의 방법으로 어떻게해야하는지 궁금합니다. 보기에서해야합니까? 아래에 나와있는 방식대로 시도합니다.어떻게 장고에서 개체를 매핑 할 수 있습니까?
views.py :
class UserObject(GenericAPIView):
def get_serializer_class(self, *args, **kwargs):
if self.request.method == 'POST':
return ObjectPostSerializer
return ObjectSerializer
def post(self, request, user_id):
serializer = ObjectPostSerializer(data=request.data)
if serializer.is_valid():
serializer.save(user_id=user_id)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py :
class ObjectPostSerializer(serializers.ModelSerializer):
def __init__(self, *args, **kwargs):
super(ObjectPostSerializer, self).__init__(*args, **kwargs)
for key in self.fields:
self.fields['field3'].required = False
class Meta:
model=Object
field3 = model.field2
fields = ('__all__')
는'field2'와는'항상 데이터베이스에서 같은 값을가집니다 field3'는 왜 두 필드가 필요합니까? 그들 중 한 명과 함께 할 수 없습니까? 그러나 질문에 답하기 위해,'field3'의 값을 무시하고 두 데이터베이스 칼럼 모두'field2'의 값을 사용하도록 serializer.save()를 작성하는 것이 좋은 방법입니다. –
@ JohnGordon 향후 field2 만 업데이트되므로 field3은 초기 값을 의미합니다. 업데이트 된 질문으로 코드를 살펴볼 수 있습니까? 어떻게 해결할 수 있습니까? – wahtdbogh
Django 객체 serializer에 대한 경험이 없으므로 자세한 것은 언급 할 수 없지만 올바른 생각을 갖고있는 것 같습니다. –