如何移除Django Model中数据库表名自动添加的后缀‘s’?
解决Django模型表名/admin显示多余后缀‘s’的问题
看起来你已经找对了方向,但可能有些细节没落实——咱们一步步来搞定这个问题:
1. 修正数据库实际表名(针对countrys表名问题)
你已经在模型的Meta类里设置了db_table = "country",这是正确的配置,但要确保两个关键步骤:
- 检查
Meta类的缩进:它必须是Country模型类的内部类(你的代码里格式是对的,但再确认下,别缩进错了层级) - 执行迁移命令让修改生效:
这会让Django把数据库表名从默认生成的python manage.py makemigrations python manage.py migratecountrys,更新为你指定的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
相关产品推荐
相关产品推荐

