django modelform save重置对象数据

时间:2015-03-15 09:51:47

标签: python django forms

我正在通过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请求中没有它,为什么它会被重置?

1 个答案:

答案 0 :(得分:1)

它必须以这种方式工作。 POST数据中不会发送空的html表单输入,因此后端不知道您显式发送空字符串以覆盖当前数据之间的区别,只是将其留空。