django 中管理模型类的详细名称

问题描述 投票:0回答:5

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

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

因此,在管理面板中,它将通过其详细名称来引用,而不是

'user'

django django-models django-admin
5个回答
50
投票
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


19
投票

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 f"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 f"Gender {str(self.id)} - {self.name}"

    class Meta:
        verbose_name = "Gender"

10
投票

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


6
投票

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

# admin.py
from . import models

class Users(models.User):
    class Meta:
        proxy = True

class UsersAdmin(admin.ModelAdmin):
    ...


admin.site.register(Users, UsersAdmin)

0
投票

ConfigAbility._meta.verbose_name = '配置能力'

ConfigAbility._meta.verbose_name_plural = '配置能力'

我确实探索过这个,但不知道这是否是你需要的东西。我将这些代码放在 Admin.py 的 ConfigAbilityAdmin 类中。然后,结果:

在此输入图片描述

使用这种方法,您不需要在模型类中配置 Meta 方法,特别是当模型类的代码是从检查数据库生成时......

© www.soinside.com 2019 - 2024. All rights reserved.