我正在做一个Django
项目。我有两种类型的成员(用户配置文件)-客户和翻译。我希望在Django管理员中看到这些配置文件,包括它的用户属性,如username
,surename
等
现在,当我创建一个名为Thomas
的UserTranslatorProfile时,我可以在Users
中的Auth
中的Auth
中看到他的名字、用户名等,以及属于UserTranslatorProfiles
中的配置文件的其他属性,这很不舒服。(在UserTranslatorProfile
我可以看到它是哪个用户,但我看不到他的属性,也无法更改它们)。在
这两个配置文件如下:
class UserTranslatorProfile(models.Model):
user = models.OneToOneField(User)
languages = models.ManyToManyField(Language)
class UserCustomerProfile(models.Model):
user = models.OneToOneField(User)
当然,它们注册在admin.py
所以问题是:有没有可能,如果,如何通过点击Django-Admin
中的UserProfile
来查看所有User
和{
不幸的是,这比需要/应该做的更困难。如果没有内联管理器,管理添加/更改表单仅用于编辑一个模型。在
如果您能够更改用户模型,则可以通过创建从user继承的自定义用户对象来实现这一点。然后,在设置.py,将AUTH_USER_MODEL设置为新模型。注意,这应该在输入数据之前完成,并且您的第一次迁移已经完成(所以您需要重新开始)
如果你做不到,我可以想出两个你可以走的方向:
更简单:为User对象创建一个内联管理器,并将其注册到翻译对象中。然后在页面底部的inline admin中有一行,可以用来编辑用户。从终端用户体验的角度来看,我讨厌这样做,但它可以完成任务。在
Neater:创建一个自定义表单,添加与要在用户模型中编辑的字段相对应的字段,然后在表单的clean和save方法中,验证/保存底层用户对象的方法。例如,创建表单字段“tra_username”、“tra_firstname”、“tra_password”。。。然后,在表单的save方法中(验证后),对每个字段执行此操作
为} ,并将
UserTranslatorProfiles
添加一个^{username
、email
和其他相关字段添加到fields
属性中。在ModelAdmin
放在admin.py
文件中,它们进一步自定义模型在管理中的显示方式。在只需设置ModelAdmin并在管理站点注册即可
step 1:
创建一个管理员py如果不存在,则在您的应用程序中。step-2:
导入要显示在管理站点上的模型。step-3:
创建一个管理模型并在管理站点注册它。更多
https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#modeladmin-objects
相关问题 更多 >
编程相关推荐