所以我想在身份验证/用户页面上显示不同的列
我通过将其放入我的 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])
最佳答案
由于公司名称存储在单独的表中,因此您可以使用自定义管理方法来显示它,如下所示。
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)
关于python - 使用扩展字段自定义 Django 用户 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19648977/