我们假设我在POST方法中有三个字段 - field1
,field2
,field3
但是在POST方法field2
和{{1}在添加到数据库期间应该具有相同的值。因此,无需手动添加field3
,field2=2
实例。我只能添加field3=2
,field1=1
,然后field2=2
将自动添加到此正文中,最后将整个3个字段添加到数据库中。我想知道应该如何以最佳方式完成它?它应该在视野中完成吗?我按照下面显示的方式尝试。
views.py:
field3=2
serializers.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)
答案 0 :(得分:0)
可能您可以使用简单逻辑,从帖子序列化器中排除field3
,并在save
模型方法上设置
:
class ObjectPostSerializer(serializers.ModelSerializer):
class Meta:
model=Object
exclude = ('field3', )
在模特中:
class Object(model.Model):
# YOU FIELDS DECLARE HERE
def save(self, *args, **kwargs):
if not self.pk:
self.field3 = self.field2
super(Object, self).save(*args, **kwargs)