Django 管理员在末尾显示带有额外 "s" 的模型名称

Django admin shows models name with extra "s" at the end

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

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

class Comments(models.Model):


    class Meta:
        
        verbose_name_plural = 'Comments'

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

为什么 django-admin 添加 's'

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

class Comment(models.Model):
   ...

class Note(models.Model):
   ...

此类 class 的实例表示单个评论,而不是一组评论。同样考虑以下

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

# reads much better
Comment.objects.get(...) #e.g. get from the comment objects

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

如何修复:

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

Class Cactus(models.Model):
    class Meta:  
        verbose_name_plural = 'Cacti'