【问题标题】:Verbose name for admin model Class in djangodjango 中管理模型类的详细名称
【发布时间】:2011-08-23 00:01:04
【问题描述】:

是否可以为实际的 Class 模型创建一个详细的名称?

class User(models.Model):
    fname = models.CharField(max_length=50, verbose_name = 'first name')

所以在管理面板中,它将通过其详细名称而不是'user' 来引用?

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:
    class User(models.Model):
        fname = models.CharField(max_length=50, verbose_name = 'first name')
    
        class Meta:
             verbose_name = "users"
    

    来源:https://docs.djangoproject.com/en/2.1/topics/db/models/#meta-options

    【讨论】:

    【解决方案2】:

    verbose_nameverbose_name_plural 这两个 Meta 类的属性对于修改 Django 的默认行为以显示我们的模型名称非常重要在管理界面上。

    您可以在 管理界面 上使用 verbose_nameverbose_name_plural 属性和模型字段名称使用关键字参数verbose_name

    请查找以下 2 个示例。

    国家型号:

    class Country(models.Model):
        name = models.CharField(max_length=100, null=False, blank=False, help_text="Your country", verbose_name="name")
        userid = models.ForeignKey(User, on_delete=models.CASCADE)
    
        def __str__(self):
            return "Country " + str(self.id) + " - " + self.name
    
        class Meta:
            verbose_name = "Country"
            verbose_name_plural = "Countries"
    

    如果您不指定 verbose_name_plural,那么 Django 会将其视为 Countrys,这看起来并不像我们希望的那样作为 Countries

    这更适合以下类型的模型

    性别模型:

    class Gender(models.Model):
        name = models.CharField(max_length=100, null=False, blank=False, help_text="Gender", verbose_name = "name")
        userid = models.ForeignKey(User, on_delete=models.CASCADE)
    
        def __str__(self):
            return "Gender " + str(self.id) + " - " + self.name
    
        class Meta:
            verbose_name = "Gender"
    

    【讨论】:

    • title = models.CharField(max_length=25 ,verbose_name=_("Quiz Title")) 在这种情况下它将做什么以及我将在哪里使用它.
    【解决方案3】:

    您也可以在“Meta”类中添加“verbose_name_plural”。

    【讨论】:

    • 适用于 Django 3
    【解决方案4】:

    要更改管理模型而不污染模型本身,您可以使用代理管理模型,如下所示:

    # admin.py
    from . import models
    
    class Users(models.User):
        class Meta:
            proxy = True
    
    class UsersAdmin(admin.ModelAdmin):
        ...
    
    
    admin.site.register(Users, UsersAdmin)
    

    【讨论】:

      最近更新 更多