如何显示django-admin用户表中的列ID?

368yc8dk  于 2023-01-27  发布在  Go
关注(0)|答案(3)|浏览(230)

除了用户名、电子邮件、名字、姓氏、员工用户列之外,我如何显示第5列用户ID。我想我必须在www.example.com中编写一些代码admin.py如:

class CustomUserAdmin(UserAdmin):
    readonly_fields = ('id',)

admin.site.register(CustomUserAdmin)
pftdvrlh

pftdvrlh1#

您应该利用ModelAdmin.list_display,文档位于--〉https://docs.djangoproject.com/en/2.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display

class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'id')
    readonly_fields = ('id',)

admin.site.register(User, CustomUserAdmin)

如果发生AlreadyRegistered错误,应在admin.site.register行之前添加以下

admin.site.unregister(User)
ekqde3dh

ekqde3dh2#

class UserAdmin(admin.ModelAdmin):
    list_display = ['first_name', 'last_name',....., 'user_id']
    class Meta:
        model = User

admin.site.register(User, UserAdmin)

在列表显示中添加user_id字段。

xqk2d5yq

xqk2d5yq3#

派对来晚了点但我想贡献点什么。
当我尝试接受的解决方案时,我意识到用户管理页面丢失了一些功能(可能是稍后添加的其他功能)。下面是不想丢失其他功能的解决方案:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

admin.site.unregister(User)

# Register your models here.
@admin.register(User)
class CustomUserAdmin(UserAdmin):
    readonly_fields = ("id",)

    def __init__(self, model, admin_site):
        super().__init__(model, admin_site)
        self.list_display = ("id",) + self.list_display

我使用了默认的UserAdmin类,并从它继承而来,然后将"id"字段添加到super的list_display字段中,很好地解决了这个问题。
请注意,如果您使用的是自定义用户类,则可以通过使用AUTH_USER_MODEL来改进解决方案。

相关问题