我正在通过POST请求进行标准对象更新:
order=Order.objects.get(uid=o_uid)
form=OrderForm(request.POST,instance=order)
updated_order=form.save(commit=False)
print(updated_order.uid)
问题是,updated_order.uid
重置为None
。
我的表单继承了Order对象的所有字段:
class OrderForm(ModelForm):
class Meta:
model = Order
fields=('__all__')
因此可以携带uid
数据。但POST请求没有uid
键(因为我没有在HTML表单模板中包含此字段)
(Pdb) request.POST
<QueryDict: {'index': ['100100'], 'csrfmiddlewaretoken': ['6iz2chMfgrwmaAUsztC8y216I4eAvefV'],
'inn': ['123123123123'], 'firma_telefon': ['(123) 123-13-13']}>
那么为什么它会被form.save()重置?我应该从表单字段中明确地将其排除吗?
P.S。当然我至少出于安全原因应该排除它,但问题仍然存在:即使POST请求中没有它,为什么它会被重置?
答案 0 :(得分:1)
它必须以这种方式工作。 POST数据中不会发送空的html表单输入,因此后端不知道您显式发送空字符串以覆盖当前数据之间的区别,只是将其留空。