Джанго - модель формы наследования - PullRequest
2 голосов
/ 25 января 2011

На веб-сайте Django приведен пример кода:

>>> class RestrictedArticleForm(EnhancedArticleForm):
...     class Meta(ArticleForm.Meta):
...         exclude = ('body',)

Насколько я понимаю, существует форма модели с именем EnhancedArticleForm (или ArticleForm и EnhancedArticleForm), и это должно исключать поле тела из формыкогда это оказано.Мой код выглядит так:

class EditUserForm(UserForm):
    class Meta(UserForm.Meta):
        exclude = ('username',)

Я не хочу, чтобы пользователь мог явно изменить свое имя пользователя.Но с этим кодом все, что он делает, это делает поле имени пользователя последним отображаемым полем.Это на самом деле не исключает этого.Я что-то упускаю из виду?

Редактировать:

Видимо, это из-за ошибки в django.Я пытаюсь переписать init примерно так, но форма не отображается.Я думаю, это потому, что я, возможно, сделал это неправильно:

class EditUserForm(UserForm):
    def __init__(self,instance):
        UserForm.__init__(self,instance)
        del self.fields['username']

1 Ответ

1 голос
/ 25 января 2011

На самом деле это ошибка в Django:

http://code.djangoproject.com/ticket/8620 (см. Комментарий в билете ниже для вашей ситуации)

К сожалению, похоже, что он не видел никаких действий более года.

Одним из способов решения этой проблемы является переопределение метода __init__ форм и просто удаление этого поля из self.fields.

...