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

时间:2012-01-06 23:00:18

标签: django

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

class FooForm(forms.ModelForm):
    foo_field = forms.ModelChoiceField(widget=FooWidget(def_arg=self.data))

在我调用self.data的地方,Python会抛出异常name 'self' is not defined。我如何在那里访问self

3 个答案:

答案 0 :(得分: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

您还可以通过__init__

访问self.fields['foo_field'].widget中的小部件

答案 1 :(得分:5)

你不能

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

答案 2 :(得分:2)

你不能;那里没有self。您需要在__init__()中进行其他设置。