如何设置Django Admin在用户配置文件选项卡中显示所有用户属性?

2024-04-26 17:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个Django项目。我有两种类型的成员(用户配置文件)-客户和翻译。我希望在Django管理员中看到这些配置文件,包括它的用户属性,如usernamesurename

现在,当我创建一个名为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和{}属性?在


Tags: 项目django用户auth类型model属性models
3条回答

不幸的是,这比需要/应该做的更困难。如果没有内联管理器,管理添加/更改表单仅用于编辑一个模型。在

如果您能够更改用户模型,则可以通过创建从user继承的自定义用户对象来实现这一点。然后,在设置.py,将AUTH_USER_MODEL设置为新模型。注意,这应该在输入数据之前完成,并且您的第一次迁移已经完成(所以您需要重新开始)

如果你做不到,我可以想出两个你可以走的方向:

更简单:为User对象创建一个内联管理器,并将其注册到翻译对象中。然后在页面底部的inline admin中有一行,可以用来编辑用户。从终端用户体验的角度来看,我讨厌这样做,但它可以完成任务。在

Neater:创建一个自定义表单,添加与要在用户模型中编辑的字段相对应的字段,然后在表单的clean和save方法中,验证/保存底层用户对象的方法。例如,创建表单字段“tra_username”、“tra_firstname”、“tra_password”。。。然后,在表单的save方法中(验证后),对每个字段执行此操作

UserCustomProfile.user.first_name = form.cleaned_data.get("tra_firstname")`
UserCustomProfile.user.save()

UserTranslatorProfiles添加一个^{},并将usernameemail和其他相关字段添加到fields属性中。在

ModelAdmin放在admin.py文件中,它们进一步自定义模型在管理中的显示方式。在

    from django.contrib import admin
    from myproject.myapp.models import UserTranslatorProfiles # Import your model

    class UserTranslatorProfilesAdmin(admin.ModelAdmin):
        fields = ('username', 'email, ) # Enter full list of fields here

    admin.site.register(UserTranslatorProfiles, UserTranslatorProfilesAdmin)

只需设置ModelAdmin并在管理站点注册即可

step 1:创建一个管理员py如果不存在,则在您的应用程序中。
step-2:导入要显示在管理站点上的模型。
step-3:创建一个管理模型并在管理站点注册它。

from django.contrib import admin
from myproject.myapp.models import Author #import your model
class AuthorAdmin(admin.ModelAdmin):
      fields = ('name', 'title', 'view_birth_date')# define-fields


admin.site.register(Author, AuthorAdmin) #now register your custom-admin model

更多
https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#modeladmin-objects

相关问题 更多 >