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} - 考勤记录"排查常见坑:
- 改完
__str__后重启Django服务器,不然代码更新不会生效 - 如果是在后台admin里显示异常,检查admin配置的
list_display,确保关联字段(比如employee)被正确加入,Django会自动调用它的__str__显示名称 - 别在ForeignKey里乱加多余参数,默认配置就够,除非你需要自定义反向关联名称(和显示无关)
- 改完
内容的提问来源于stack exchange,提问作者ckcAdmin
相关产品推荐
相关产品推荐

