【发布时间】:2022-03-15 21:43:59
【问题描述】:
我正在尝试更好地了解 django 管理员,同时,我正在尝试向当前用户管理员添加一个字段。在models.py中我已经完成了
User.add_to_class('new_field', models.BooleanField(default=False))
在 admin.py 中我有以下内容(字段集基本上只是从 django/contrib/auth/admin.py 复制的)
class AdjUserAdmin(UserAdmin):
list_display = UserAdmin.list_display + ('new_field',)
list_filter = UserAdmin.list_filter + ('new_field',)
fieldsets = UserAdmin.fieldsets
fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')
问题是,当我这样做时,我得到了错误:
AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.
我查看了 UserChangeForm,但看起来它已经正确地将 User 作为模型。我不确定为什么表单中缺少new_field。
谢谢
关于这是臭代码
我知道这是一种很臭的猴子修补方式,但是子类化给我带来的问题主要是因为these 的原因.. 如果我能让它按照上述方式工作,我会很高兴..可能还很臭。
关于推荐方式
我知道创建用户配置文件的推荐方法,只是在特定情况下,我看不到创建一个全新的表并在我想要存储所有内容时额外调用数据库的优点是一些额外的信息,例如is_private 或类似的信息。如果我要存储更多信息,那么我同意,最好设置用户个人资料。
【问题讨论】:
标签: django django-admin