python - 如何排除表单子(monad)类中 ModelForm 中声明的字段?

标签 python django django-forms modelform

在 Django 中,我试图从 ModelForm 表单派生(子类)一个新表单,我想在其中删除一些字段(或者更正确地说,只包含一些字段)。当然,明显的方法是这样做(基本形式来自django.contrib.auth.forms):

class MyUserChangeForm(UserChangeForm):
  class Meta(UserChangeForm.Meta):
    fields = ('first_name', 'last_name', 'email')

但这不起作用,因为它还在结果表单中添加/保留了一个用户名字段。该字段已在 UserChangeForm 中显式声明。即使将用户名添加到排除属性也没有帮助。

是否有某种适当的方法可以排除它并且我错过了一些东西?这是一个错误吗?有什么解决办法吗?

最佳答案

试试这个:

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 - 如何排除表单子(monad)类中 ModelForm 中声明的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3287974/

相关文章:

Django 过滤器日期格式不正确

python - 尽管有特定 View ,Django URL 冲突

用于表单编辑的 Django 单元测试

python - TypeError at/news/, html() 不带参数

python - 根据相似性替换字符串

python - Sklearn 如何使用 Joblib 或 Pickle 保存从管道和 GridSearchCV 创建的模型?

python - 在 Django 中,术语 "app"是如何定义的?

google-app-engine - 属性错误 : 'list' object has no attribute 'get'

python - 将请求路由到特定的 uwsgi 工作线程

python - 如何将我的 python 脚本分成两个并让它们像一个一样运行?