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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:12:07