Форма Джанго: имя «Я» не определено - PullRequest
7 голосов
/ 07 января 2012

У меня есть форма в 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 ]

9 голосов
/ 07 января 2012

Как уже отвечали другие, на данный момент нет ссылки на 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

5 голосов
/ 07 января 2012

вы не можете

на момент создания класса экземпляр объекта отсутствует. для такого динамического поведения вам необходимо переопределить метод __init__ и создать там поле (или изменить некоторые его параметры)

2 голосов
/ 07 января 2012

Вы не можете;там нет self.Вам нужно будет выполнить дополнительную настройку в __init__().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...