使用扩展字段自定义Django用户表视图

2024-05-06 18:11:30 发布

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

所以我想在auth/users页面上显示不同的列

我把这个放在我的模型.py在

class InsiderUser(models.Model):
    user = models.OneToOneField(User)
    company_name = models.CharField(max_length=100L, blank=True)

我可以在管理中编辑字段,方法是在管理员py以下内容:

^{pr2}$

但是,更改列表显示时,我遇到了一些问题,我尝试过:

class UserAdmin(UserAdmin):
    inlines = (InsiderUserInline, )
    list_display = ('email', 'first_name', 'last_name', InsiderUser)

这只是告诉我有一个InsiderUser对象,它让我觉得我走在正确的道路上,因为以下所有错误都产生了:

class UserAdmin(UserAdmin):
    inlines = (InsiderUserInline, )
    list_display = ('email', 'first_name', 'last_name', InsiderUser.company_name)

class UserAdmin(UserAdmin):
    inlines = (InsiderUserInline, )
    list_display = ('email', 'first_name', 'last_name', InsiderUser[company_name])

Tags: namepyauthmodelsemaildisplaycompanylist
1条回答
网友
1楼 · 发布于 2024-05-06 18:11:30

由于公司名称存储在一个单独的表中,因此可以使用下面给出的自定义管理方法显示它。在

class UserAdmin(UserAdmin):
    inlines = (InsiderUserInline, )
    list_display = ('email', 'first_name', 'last_name', 'display_company_name', )

    def display_company_name(self, request):
        if InsiderUser.objects.filter(user__id = request.id):
            return InsiderUser.objects.get(user__id = request.id).company_name
        else:
            return None
    display_company_name.short_description = 'Company Name'

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

相关问题 更多 >