所以我想在auth / users页面上显示不同的列
我已将我的用户模型扩展到我的models.py
中class InsiderUser(models.Model):
user = models.OneToOneField(User)
company_name = models.CharField(max_length=100L, blank=True)
我可以通过将以下内容放在admin.py中来编辑管理员中的字段:
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])
答案 0 :(得分: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)