Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django自定义表单字段初始数据_Python_Django_Django Forms_Django Models - Fatal编程技术网

Python 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

我很难理解如何在django视图中初始化自定义表单字段

例如:


但是,如何将数据传递到自定义字段(如此处实现的字段)

所有字段都有“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=...)