Python Django自定义表单字段初始数据
我很难理解如何在django视图中初始化自定义表单字段 例如:Python Django自定义表单字段初始数据,python,django,django-forms,django-models,Python,Django,Django Forms,Django Models,我很难理解如何在django视图中初始化自定义表单字段 例如: 但是,如何将数据传递到自定义字段(如此处实现的字段) 所有字段都有“initial”属性,因此即使是自定义字段,也可以设置该属性 因此,您应该能够覆盖构造函数: class PaymentForm(forms.Form): def __init__(self, exp = None, *args, **kwargs): super(PaymentForm, self).__init__(*args, **k
但是,如何将数据传递到自定义字段(如此处实现的字段) 所有字段都有“initial”属性,因此即使是自定义字段,也可以设置该属性 因此,您应该能够覆盖构造函数:
class PaymentForm(forms.Form):
def __init__(self, exp = None, *args, **kwargs):
super(PaymentForm, self).__init__(*args, **kwargs)
if exp:
self.fields['expiration'].initial = exp
在您看来,您可以传递所需的数据:
form = PaymentForm(exp=...)
这是有道理的,但我不明白CCExpField是如何获得这些数据的。在您的回答中,我的付款表单在初始化时检查参数“exp”,如果通过,则将其传递到字段PaymentForm.expiration。此时,作为CCExpField的PaymentForm.expiration如何将数据放入其2个字符字段中。CCExpField在此处提供数据:self.fields['expiration'].initial=exp,其中设置了field对象的'initial'属性。如果之前没有保存任何内容,这将被输入到小部件中显示为值。我不理解为什么您认为这与任何其他字段不同。实例化表单时只需使用
initial
,正如您在评论中提到的那样。@DanielRoseman:我将传递什么到上面定义的PaymentForm,以用初始数据预填充PaymentForm.expiration?我尝试了c=PaymentForm({'expiration':'01/2011'})和其他组合,但无法使其预填充,这就是我问这个问题的原因。
class PaymentForm(forms.Form):
def __init__(self, exp = None, *args, **kwargs):
super(PaymentForm, self).__init__(*args, **kwargs)
if exp:
self.fields['expiration'].initial = exp
form = PaymentForm(exp=...)