2011-01-24 43 views
2

在Django的网站此示例代码给出:Django的 - 的ModelForm继承

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

我对此的理解是,有一个名为EnhancedArticleForm(或ArticleForm和EnhancedArticleForm)的ModelForm并认为这应该排除体内场呈现时的表单。我的代码如下所示:

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

这实际上是在Django的错误:

http://code.djangoproject.com/ticket/8620(见票的评论进一步下降的情况而定)

不幸的是,看起来在一年内还没有看到任何行动。

解决这个问题的一个方法是覆盖表格__init__方法,并简单地从self.fields中删除该字段。

+0

有趣的东西。 JPC你重写`UserForm`中的`username`? – 2011-01-24 23:50:38