Django Admin面板中Meetings模型类名显示末尾重复字符问题
解决Django Admin中模型名称重复的问题
问题原因
Django Admin默认会自动将模型类名转换为复数形式显示。你的模型类命名为Meetings(已经是复数),Django的复数生成规则会在其基础上再添加复数后缀,导致显示出重复字符。
解决方法
方法1:修改模型类名为单数(推荐)
Django的最佳实践是模型类使用单数形式命名(比如Meeting而非Meetings),Django会自动处理为正确的复数形式显示在Admin面板中:
修改models.py:
from django.db import models from django.utils.timezone import time class Meeting(models.Model): # 改为单数命名 title = models.CharField(max_length=200) date = models.DateField() start_time = models.IntegerField(default=9) # 直接用整数表示小时,修复类型不匹配问题 duration = models.IntegerField(default=1) room = models.ForeignKey(Room, on_delete=models.CASCADE) def __str__(self): return f"{self.title} at {self.start_time} on {self.date}"
同步更新admin.py:
from .models import Meeting admin.site.register(Meeting)
方法2:自定义模型复数名称
如果不想修改模型类名,可以在模型的Meta类中指定verbose_name_plural强制设置复数显示名称:
修改models.py:
from django.db import models from django.utils.timezone import time class Meetings(models.Model): title = models.CharField(max_length=200) date = models.DateField() start_time = models.IntegerField(default=9) # 修复类型不匹配问题 duration = models.IntegerField(default=1) room = models.ForeignKey(Room, on_delete=models.CASCADE) def __str__(self): return f"{self.title} at {self.start_time} on {self.date}" class Meta: verbose_name_plural = "Meetings" # 指定复数显示名称
另外注意:原代码中start_time字段用IntegerField但默认值设为time(9),这会导致类型不匹配(time()返回datetime.time对象,而IntegerField需要整数),上面的代码已经修正为直接用整数9表示9点。
内容的提问来源于stack exchange,提问作者Geo48
相关产品推荐
相关产品推荐

