You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django自定义用户配置文件中显示姓氏

解决Django Admin显示用户姓氏而非用户名的问题

嘿,我来帮你搞定这个需求!你现在需要在Admin后台的UserProfile列表里展示用户的姓氏,而不是默认显示的用户名,对吧?咱们可以通过给user_action类添加自定义字段的方式来实现,具体步骤如下:

步骤1:添加自定义方法获取姓氏

在你的user_action类中,添加一个自定义方法,用来从关联的User模型中提取姓氏。如果用户没有填写姓氏,还可以做个 fallback 显示用户名,避免空值:

def get_user_last_name(self, obj):
    # 如果姓氏为空,显示用户名作为备选
    return obj.user.last_name or obj.user.username
# 设置这个字段在Admin列表里的显示名称
get_user_last_name.short_description = '用户姓氏'
# 允许按姓氏排序(可选)
get_user_last_name.admin_order_field = 'user__last_name'

步骤2:更新list_display字段

把原来list_display里的'user'替换成咱们刚定义的'get_user_last_name',这样列表里就会显示姓氏而不是默认的用户名了。

修改后的完整Admin代码

from django.contrib import admin
from commonpage.models import UserProfile, PositionTable

# 自定义动作(确保你已定义这两个动作函数,这里补充示例实现)
def make_user_active(modeladmin, request, queryset):
    queryset.update(useractive=True)
make_user_active.short_description = "标记选中用户为激活状态"

def make_user_deactive(modeladmin, request, queryset):
    queryset.update(useractive=False)
make_user_deactive.short_description = "标记选中用户为非激活状态"

class user_action(admin.ModelAdmin):
    # 替换user为自定义的姓氏字段
    list_display = ['get_user_last_name', 'useractive','position','team_name','preferd_shift']
    ordering = ['id']
    list_filter = ('useractive','position','team_name','preferd_shift')
    list_editable = ['position','team_name','preferd_shift']
    actions = [make_user_active, make_user_deactive]
    
    # 添加自定义方法获取用户姓氏
    def get_user_last_name(self, obj):
        return obj.user.last_name or obj.user.username
    get_user_last_name.short_description = '用户姓氏'
    get_user_last_name.admin_order_field = 'user__last_name'

# 注册模型
admin.site.register(UserProfile, user_action)
admin.site.register(PositionTable)

额外说明

  • 如果你想同时显示用户名和姓氏,只需要把get_user_last_name加到list_display里,保留原来的'user'即可,比如:list_display = ['user', 'get_user_last_name', 'useractive', ...]
  • admin_order_field属性是用来让这个自定义字段支持排序的,如果你不需要排序功能,可以去掉这一行。

内容的提问来源于stack exchange,提问作者Mohamed Naveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:29:23