我的模型形式:
class CustomerBillingForm(ModelForm):
expiration_month = models.IntegerField(choices=(1,2,3,4,5,6,7,8,9,10,11,12))
expiration_year = models.IntegerField(max_length=4)
card_number = models.IntegerField(max_length=16)
card_cvv = models.IntegerField(max_length=4)
class Meta:
model = Customer
fields = ['billing_first_name', 'billing_last_name', 'billing_address',
'billing_address_2', 'billing_city', 'billing_state',
'billing_zip', 'billing_country']
当我在模板中使用此表单时,我没有获得4个自定义字段,只有“字段”列表中的字段。我无法将前4个字段添加到字段列表中。我有什么选择?
答案 0 :(得分:1)
使用正确的字段类 - 在本例中为forms.IntegerField
而不是models.IntegerField
。您还需要更改您的参数 - 例如,将expiration_month
的窗口小部件覆盖为select
窗口小部件,以及您尝试设置所需的max_length的窗口小部件将maxlength
参数传递给窗口小部件,并定义要使用的任何验证。
答案 1 :(得分:0)
如果您在fields
中使用Meta
,那么您必须列出您要使用的所有字段,即使是您要添加到表单中的字段,但模型中不存在。
您的意思是什么?您无法更改fields
中的Meta
?您可以更改表单上的__init__
功能吗?您也可以对此表单进行子类化,并覆盖fields
或__init__
。