在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')


创建字段时,这将从表单中动态删除字段。

关于python - 如何在表单的子类的ModelForm中排除声明的字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3287974/

10-11 20:45