【问题标题】:is this a Django bug?这是一个 Django 错误吗?
【发布时间】:2020-12-01 21:27:47
【问题描述】:

我创建了一个项目,在该项目中一个名为 myusers 的应用程序。然后我创建了一个类名为 AllUsers 的模型。然后我用来自 faker 的数据填充模型。

当我在授权下访问 127.0.0.1/admin 时,我有组和用户。在 myusers 下,我有“所有用户”,它是指向 http://127.0.0.1:8000/admin/myusers/allusers/

的链接

所以,我只是想知道这是否是一个小错误。它不应该说“AllUsers”而不是“All users”吗?还是我在此过程中破坏了某些东西?

【问题讨论】:

  • 不,型号名称是用单数写的。
  • 这是如何应用的?所有用户看起来并不单一
  • 您将课程重命名为AllUser

标签: django django-models


【解决方案1】:

,模型通常有一个单数名称,所以AllUser,而不是AllUsers

Django 会根据名称为复数添加一个后缀…s。实际上,对于模型,您可以使用以下命令检查详细名称:

>>> from django.contrib.auth.models import User
>>> User.Meta.verbose_name_plural
'users'

对于您的模型,您可以自己指定单数和复数名称:

class AllUsers(models.Model):
    # …
    class Meta:
        verbose_name = 'all user'
        verbose_name_plural = 'all users'

不过,最好给类一个单数名称。特别是因为其他部分,比如related_name=… [Django-doc] 的默认值是<i>modelname</i>_set,所以对于你的AllUser 模型的ForeignKey,它看起来像allusers_set,看起来不太好。

【讨论】:

  • 没注意到我们可以使用 User.Meta.verbose_name_plural (: 谢谢
【解决方案2】:

您不应创建代表一组实体的模型。一个模型应该代表一个单一的实体。由于模型应该只表示单个实体,因此 Django 在 admin 的末尾添加一个“s”以使其复数(即,名为“Car”的模型在 admin 中将是“Cars”)。

当然,您可以更改verbose_plural_name (https://docs.djangoproject.com/en/3.1/ref/models/options/#verbose-name-plural),但最好的办法是不要继续使用这种技术来代表所有用户。

要代表所有用户,您应该使用QuerySet

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 2012-03-25
    • 2010-12-22
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多