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

如何在Django模板中显示对象名称而非ID?

解决Django外键下拉框显示ID而非分类名称的问题

嘿,我来帮你搞定这个问题!这其实是Django模型的一个常见小细节——默认情况下,模型对象的字符串表示是它的内存标识或者ID,所以下拉框才会显示ID而不是你想要的分类名称。咱们只需要两步就能解决:

1. 给Category模型添加__str__方法

Django在渲染表单的下拉选项时,会调用模型的__str__方法来生成显示的文本。你只需要修改models.py里的Category类,重写这个方法返回分类名称:

class Category(models.Model):
    name_category = models.CharField(max_length=45)
    
    # 添加这个方法,返回分类名称
    def __str__(self):
        return self.name_category
    
    class Meta:
        db_table = 'category'

2. 修正ForeignKey的关联模型笔误

我注意到你Books模型里的ForeignKey关联的是'Editora',但你的分类模型明明是Category,这肯定是手滑打错了,得改成正确的模型名,不然不仅显示有问题,后续操作也会报错:

class Books(models.Model):
    ...
    # 把'Editora'改成'Category'
    category_cod_category = models.ForeignKey(
        'Category', on_delete=models.CASCADE
    )
    ...
    class Meta:
        db_table = 'Books'

做完这两步之后,重启你的Django服务,再打开表单页面,下拉框里就会显示分类的名称而不是ID啦!另外这个__str__方法还会在Django admin后台、打印对象等场景下生效,让你的模型对象显示更友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:27