django - Django 在管理字段中将用户显示为用户全名
问题描述
尝试将外来用户显示为使用全名时卡住了
模型.py
class Customer(models.Model):
name = models.charfield(max_length=100)
sales = models.foreignkey(User, on_delete=models.CASADE)
管理员.py
@admin.register(Customer)
list_display = ('name', 'sales')
不,默认情况下销售作为用户外国显示作为用户名。但我想将其显示为名字或全名
解决方案
已编辑
您可以在 ModelAdmin 中添加一个方法,正如@dirkgroten 在下面的评论中提到的:
from django.contrib import admin
@admin.register(Customer)
class CustomerAdmin(admin.ModelAdmin)
list_display = ('name', 'sales_first_name')
def sales_first_name(self, obj):
return obj.sales.first_name + obj.sales_last_name
好处是您可以根据需要处理空值,如果不需要您的外键,例如
def sales_first_name(self, obj):
if obj.sales:
return obj.sales.first_name
else:
return None # or return 'nobody'
旧答案
(正如评论中提到的那样,它不起作用(除非你使用像django-related-admin这样的插件))
也许sales__first_name
改用?
list_display = ('name', 'sales__first_name')
这样 django 将评估用户对象的 first_name 属性,而不是返回默认的字符串表示(由__str__
用户模型中的方法定义,它只返回username
)。
推荐阅读
- python - sqlite3.OperationalError:没有这样的表:时间表
- python - 如何确定函数是否返回按需计算结果的可迭代对象?
- amazon-web-services - 如何使 HTTPS url/链接适用于我的亚马逊 EC2 实例?
- angular - 无法在角度应用程序中查看库中的图像
- javascript - 多行刷卡器无法从 swiper.js 做出反应
- reactjs - 为 django admin 和 react 应用程序一起服务时的问题
- python - 我无法让 Opera 在 selenium python 上工作
- c++ - ifstream >> 运算符的分段错误
- openiddict - OpenIddict 解密密钥失败
- java - Spring Framework 的 ListenableFuture#addCallback 完成回调由哪个线程执行?