我在Django中有一个看起来像这样的表单
class FooForm(forms.ModelForm):
foo_field = forms.ModelChoiceField(widget=FooWidget(def_arg=self.data))
在我调用self.data
的地方,Python会抛出异常name 'self' is not defined
。我如何在那里访问self
?
答案 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__()
中进行其他设置。