Django形式:名称'self'未定义

san*_*ans 7 django

我在Django中有一个看起来像这样的表单

class FooForm(forms.ModelForm):
    foo_field = forms.ModelChoiceField(widget=FooWidget(def_arg=self.data))
Run Code Online (Sandbox Code Playgroud)

在我调用的地方self.data,Python会引发异常name 'self' is not defined.我怎么去self那里?

dge*_*gel 9

正如其他人所回答的那样,self在那一点上没有提及.这样的东西确实有效:

class FooForm(forms.ModelForm):
    foo_field = forms.ModelChoiceField()

    def __init__(self, *args, **kwargs):
        super(FooForm, self).__init__(*args, **kwargs)
        self.fields['foo_field'].initial = self.data
Run Code Online (Sandbox Code Playgroud)

您还可以__init__通过访问小部件self.fields['foo_field'].widget


sec*_*ond 5

你不能

在创建类时,没有对象实例.对于这种动态行为,您需要覆盖该__init__方法并在那里创建字段(或更改其某些参数)