2

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

我通过将它放在我的 models.py 中扩展了我的用户模型

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

我可以通过在 admin.py 中放置以下内容来编辑 admin 中的字段:

class InsiderUserInline(admin.StackedInline):
    model = InsiderUser
    can_delete = False
    verbose_name_plural = 'insideruser'

# Define a new User admin
class UserAdmin(UserAdmin):
    inlines = (InsiderUserInline, )

但是更改 list_display 我遇到了一些麻烦,我尝试过:

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])
4

1 回答 1

3

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

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)
于 2013-10-29T04:59:28.240 回答