Django 管理显示模型名称末尾带有额外的“s”

nil*_*far 3 django django-models django-admin

我是姜戈的新手。在管理面板中,模型名称末尾有一个额外的“s”。我该如何解决这个问题?

在此输入图像描述

AMG*_*AMG 6

将元类添加到您的模型并设置verbose_name_pluralhttps://docs.djangoproject.com/en/3.2/ref/models/options/#verbose-name-plural)。理想情况下,将您的类命名为单数(在这种情况下,您将拥有class Comment(models.Model).

class Comments(models.Model):


    class Meta:
        
        verbose_name_plural = 'Comments'
Run Code Online (Sandbox Code Playgroud)

好读: https://simpleisbetterthancomplex.com/tips/2018/02/10/django-tip-22-designing-better-models.html# :~:text=Always%20name%20your%20models%20using,not% 20a%20集合%20of%20公司


Tim*_*Tim 5

为什么 django-admin 添加 's'

Django 有一个命名约定,模型以单数命名。所以你的类应该命名为:

class Comment(models.Model):
   ...

class Note(models.Model):
   ...
Run Code Online (Sandbox Code Playgroud)

此类的实例代表单个注释,而不是一组注释。同样考虑以下

# doesn't really make sense
Comments.objects.get(...)

# reads much better
Comment.objects.get(...) #e.g. get from the comment objects
Run Code Online (Sandbox Code Playgroud)

这是一个约定,Django 管理员希望您的类以单数命名。因此,Django 添加一个 's' 作为类名复数的标准方式。(诚​​然,这并不适用于所有单词,并且非常以英语为中心,但作为替代,Django 提供了verbose_name_plural元属性)。

如何修复它:

重命名您的类,使它们成为单数。这将使您的代码对于任何习惯阅读 django 的人来说更具可读性。它还将使您的模型以与其他第三方软件包一致的方式命名。如果您的类名不是英文,或者不能简单地通过附加 s 来实现复数,请使用verbose_name_plural例如:

Class Cactus(models.Model):
    class Meta:  
        verbose_name_plural = 'Cacti'
Run Code Online (Sandbox Code Playgroud)