[英]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.