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

Django模型引用显示ID与object而非名称的解决方法咨询

解决Django关联模型显示ID/Object而非名称的问题
  • 先把**被关联的模型(比如你的Employee)**的__str__方法写对,这是核心:
    直接返回你想显示的名称字段,比如:

    class Employee(models.Model):
        employee_name = models.CharField(max_length=100)
        # 其他字段...
    
        def __str__(self):
            return self.employee_name
    

    别在这个方法里返回self或者其他对象,就返回字符串类型的名称。

  • 关联模型的__str__按需编写,不用复杂:
    比如你的关联模型(比如考勤/薪资记录类),如果想在它的对象显示里包含员工名,直接用self.employee就行,因为Employee的__str__已经帮你处理成名称了:

    class Attendance(models.Model):
        employee = models.ForeignKey(Employee, on_delete=models.CASCADE)
        # 其他字段...
    
        def __str__(self):
            return f"{self.employee} - 考勤记录"
    
  • 排查常见坑:

    1. 改完__str__后重启Django服务器,不然代码更新不会生效
    2. 如果是在后台admin里显示异常,检查admin配置的list_display,确保关联字段(比如employee)被正确加入,Django会自动调用它的__str__显示名称
    3. 别在ForeignKey里乱加多余参数,默认配置就够,除非你需要自定义反向关联名称(和显示无关)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:25:01