在 Django 网站上给出了这个示例代码:
>>> class RestrictedArticleForm(EnhancedArticleForm):
... class Meta(ArticleForm.Meta):
... exclude = ('body',)
我对此的理解是,有一个名为 EnhancedArticleForm(或 ArticleForm 和 EnhancedArticleForm)的模型,它应该在呈现时从表单中排除 body 字段。我的代码如下所示:
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']
请您参考如下方法:
这实际上是 Django 中的一个错误:
http://code.djangoproject.com/ticket/8620 (请根据您的情况进一步查看工单中的评论)
不幸的是,它看起来已经一年多没有看到任何 Action 了。
解决此问题的一种方法是覆盖表单 __init__ 方法并简单地从 self.fields 中删除该字段。
