我试图更好地理解 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
表格中缺失。
Thanks
关于这个臭代码
我知道这是一种臭猴子修补方法来执行此操作,但子类化给我带来的问题主要是these http://www.b-list.org/weblog/2007/feb/20/about-model-subclassing/原因..如果我能让它按照上述方式工作,我会很高兴..也许会发臭。
关于推荐的方式
我知道创建用户配置文件的推荐方法,只是在特定情况下,当我想要存储的只是额外的数据时,我看不到创建整个新表并额外调用数据库的优点一些信息,例如is_private
或一些这样的。如果我要存储更多信息,那么我同意,设置用户配置文件是更好的选择。