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

如何移除Django Model中数据库表名自动添加的后缀‘s’?

解决Django模型表名/admin显示多余后缀‘s’的问题

看起来你已经找对了方向,但可能有些细节没落实——咱们一步步来搞定这个问题:

1. 修正数据库实际表名(针对countrys表名问题)

你已经在模型的Meta类里设置了db_table = "country",这是正确的配置,但要确保两个关键步骤:

  • 检查Meta类的缩进:它必须是Country模型类的内部类(你的代码里格式是对的,但再确认下,别缩进错了层级)
  • 执行迁移命令让修改生效:
    python manage.py makemigrations
    python manage.py migrate
    
    这会让Django把数据库表名从默认生成的countrys,更新为你指定的country。

2. 修正Admin门户的显示名称(如果是页面显示带‘s’)

有时候问题不是数据库表名,而是Django Admin里的模型复数显示名称(比如显示"Countrys"而不是你想要的"Country")。这时候可以在Meta类里添加自定义显示属性:

class Country(models.Model):
    name = models.CharField(max_length=30)
    population = models.IntegerField()
    alpha2Code = models.CharField(max_length=2, primary_key=True)
    languages = models.CharField(max_length=256)
    
    class Meta:
        db_table = "country"
        verbose_name = "Country"  # 自定义单数显示名称
        verbose_name_plural = "Countries"  # 自定义复数显示名称,也可以直接设为"Country"完全去掉复数

这样Admin门户里就会显示你设置的名称,而不是Django自动生成的错误复数countrys。

额外小提示

  • 如果之前已经生成过迁移文件,修改db_table后一定要重新生成迁移,否则数据库不会同步更新
  • 确认没有其他迁移文件或代码逻辑覆盖了这个表名设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:27:38