从def __init __()访问def clean()中的变量

时间:2019-02-03 00:28:31

标签: python django django-forms

我已经在表单的def init 函数中建立了一个变量,希望能够在def clean()中以相同的形式进行访问。

def __init__(self, *args, **kwargs):                         
        super(UserOrderForm, self).__init__(*args, **kwargs)
        car = 'BMW'

def clean(self):
       cleaned_data = super(UserOrderForm, self).clean()
       print(car)

当我打印汽车时,我被告知

name 'car' is not defined

有没有办法做到这一点?

谢谢!

3 个答案:

答案 0 :(得分:2)

在Python中,您使用self声明实例属性,必须将代码更改为

def __init__(self, *args, **kwargs):                         
        super(UserOrderForm, self).__init__(*args, **kwargs)
        self.car = 'BMW'

def clean(self):
       cleaned_data = super(UserOrderForm, self).clean()
       print(self.car)

在您的原始代码中,变量car确实仅存在于__init__方法内部。

答案 1 :(得分:0)

我认为您要使car成为成员变量,然后使用self.car =“ bmw”在init方法中进行设置。

然后,当您要查看clean的值时,可以调用self.clean

python class instance variables and class variables

答案 2 :(得分:0)

不确定要执行的操作,但表单应声明一个模型以使查询集可以使用。

class UserOrderForm(forms.ModelForm):

    class Meta:
        model = Cars
        fields = ['manufacturer', 'model_number', 'etc']
        widgets = {'manufacturer': forms.Select}

您的用户将提供输入,例如,从选择字段中选择BMW。

签出:https://docs.djangoproject.com/en/2.1/topics/forms/modelforms/