在 Django 中,我试图从 ModelForm
表单派生(子类)一个新表单,我想在其中删除一些字段(或者只有一些字段,更正确)。当然,显而易见的方法是(基本形式来自 django.contrib.auth.forms
):
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
fields = ('first_name', 'last_name', 'email')
但这不起作用,因为它还在生成的表单中添加/保留了一个 username
字段。此字段已在 UserChangeForm
中明确声明。即使将 username
添加到 exclude
属性也无济于事。
是否有一些正确的方法来排除它而我遗漏了什么?这是一个错误吗?有什么解决方法吗?
试试这个:
class MyUserChangeForm(UserChangeForm):
def __init__(self, *args, **kwargs):
super(MyUserChangeForm, self).__init__(*args, **kwargs)
self.fields.pop('username')
class Meta(UserChangeForm.Meta):
fields = ('first_name', 'last_name', 'email')
这会在创建表单时动态地从表单中删除一个字段。
我是一名优秀的程序员,十分优秀!