Python 在窗体启动后为django窗体赋值
我有一张表格SOproduct2Form 在这个表单中,我有一个字段priceperunit 它在我的模型中定义如下Python 在窗体启动后为django窗体赋值,python,django,forms,Python,Django,Forms,我有一张表格SOproduct2Form 在这个表单中,我有一个字段priceperunit 它在我的模型中定义如下 priceperunit = MoneyField(max_digits=10, decimal_places=2, default_currency='USD') form = SOproduct2Form(instance = soproduct1) #form.priceperunit = 3 form.priceperunit = soproduct1.produc
priceperunit = MoneyField(max_digits=10, decimal_places=2, default_currency='USD')
form = SOproduct2Form(instance = soproduct1)
#form.priceperunit = 3
form.priceperunit = soproduct1.product.defaultPrice
#setattr(form, priceperunite, 5)
在初始化表单后,我尝试将其指定为默认值。
因为表单是对象而不是字典,所以我是这样做的
priceperunit = MoneyField(max_digits=10, decimal_places=2, default_currency='USD')
form = SOproduct2Form(instance = soproduct1)
#form.priceperunit = 3
form.priceperunit = soproduct1.product.defaultPrice
#setattr(form, priceperunite, 5)
我没有收到任何错误,在输出时它总是显示0
我尝试直接赋值,但得到的是相同的0。(参见注释行)
当使用setattr(也有注释)时,我得到一个错误,即没有定义priceperunit
问题:问题是什么以及如何使其工作?在表单启动后,您真的需要分配值吗?根据您的问题描述,在我看来,您只需要设置字段中输入的初始值 通常在标准Django字段中,您会使用
initial
参数,但我检查了Django money
的源代码,似乎您需要default
和default\u currency
参数。试着这样做:
priceperunit=MoneyField(默认值=value,默认值=currency)
表单启动后是否确实需要分配值?根据您的问题描述,在我看来,您只需要设置字段中输入的初始值
通常在标准Django字段中,您会使用initial
参数,但我检查了Django money
的源代码,似乎您需要default
和default\u currency
参数。试着这样做:
priceperunit=MoneyField(默认值=value,默认值\u currency=currency)
为什么要在初始化后执行此操作?为什么不在initial
dict中传递它,或者通过修改实例来传递它呢?是的,这是一个很好的主意,而且它实际上是有效的:)soproduct1.priceperunit=soproduct1.product.defaultPrice form=SOproduct2Form(instance=soproduct1)为什么要在初始化后执行此操作?为什么不在初始版本中传递它,或者通过修改实例来传递它呢?是的,这是一个很好的主意,而且它实际上是有效的:)soproduct1.priceperunit=soproduct1.product.defaultPrice form=SOproduct2Form(instance=soproduct1)是的,如您和Daniel所提到的,在启动之前这样做是个好主意。我动态地分配默认值,因为每个产品都有默认价格。是的,在启动之前这样做是个好主意,正如您和Daniel提到的。我动态分配默认值,因为每个产品都有默认价格