[英]Python TypeError: takes 4 positional arguments but 5 were given
[英]TypeError: update() takes 2 positional arguments but 3 were given : Python
我收到TypeError
: update() takes 2 positional arguments but 3 were given
。 我不知道为什么会发生此错误。 如果有人能弄清楚我在哪里做错了,那么将不胜感激。 非常感谢你。
序列化程序.py:
class ShopOwnerOrderManageSerializer(Serializer):
invoice_no = CharField(read_only=True)
shopowner_expected_date = CharField(allow_blank=True)
shopowner_estimated_time = CharField(allow_blank=True)
status = CharField(allow_blank=True)
class Meta:
model = CarOwnerShopConfirm
fields= ['shopowner_expected_date','shopowner_estimated_time','status']
def update(self,validated_data):
shopowner_expected_date = validated_data['shopowner_expected_date']
shopowner_estimated_time = validated_data['shopowner_estimated_time']
status = validated_data['status']
shopconfirm_obj = CarOwnerShopConfirm.objects.update(
shopowner_expected_date = shopowner_expected_date,
shopowner_estimated_time = shopowner_estimated_time,
status = status
)
shopconfirm_obj.save()
return validated_data
Serializer
update
采用三个参数: self
、 * instance*
和验证数据。 通常情况下,数据库不保存在数据库中的变化,但只更新实例。 例如,视图随后可以决定通过调用.save()
来更新数据库。
您可能还想使用ModelSerializer
,因为简单的Serializer
不考虑Meta
内部类,因此不会将序列化器字段“绑定”到对象的这些字段:
class ShopOwnerOrderManageSerializer(ModelSerializer):
invoice_no = CharField(read_only=True)
shopowner_expected_date = CharField(allow_blank=True)
shopowner_estimated_time = CharField(allow_blank=True)
status = CharField(allow_blank=True)
class Meta:
model = CarOwnerShopConfirm
fields= ['shopowner_expected_date','shopowner_estimated_time','status']
def update(self, instance, validated_data):
instance.shopowner_expected_date = validated_data.get('shopowner_expected_date', instance.shopowner_expected_date)
instance.shopowner_estimated_time = validated_data.get('shopowner_estimated_time', intance.shopowner_estimated_time)
instance.status = validated_data.get('status', instance.status)
return instance
然而,由于 Django 的ModelSerializer
会像我们在这里所做的那样实现update
,你可以完全省略它:
class ShopOwnerOrderManageSerializer(ModelSerializer):
invoice_no = CharField(read_only=True)
shopowner_expected_date = CharField(allow_blank=True)
shopowner_estimated_time = CharField(allow_blank=True)
status = CharField(allow_blank=True)
class Meta:
model = CarOwnerShopConfirm
fields= ['shopowner_expected_date','shopowner_estimated_time','status']
# update
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.