【发布时间】: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
是否可以为实际的 Class 模型创建一个详细的名称?
class User(models.Model):
fname = models.CharField(max_length=50, verbose_name = 'first name')
所以在管理面板中,它将通过其详细名称而不是'user' 来引用?
【问题讨论】:
标签: django django-models django-admin
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
【讨论】:
verbose_name 和 verbose_name_plural 这两个 Meta 类的属性对于修改 Django 的默认行为以显示我们的模型名称非常重要在管理界面上。
您可以在 管理界面 上使用 verbose_name 和 verbose_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"
【讨论】:
您也可以在“Meta”类中添加“verbose_name_plural”。
【讨论】:
要更改管理模型而不污染模型本身,您可以使用代理管理模型,如下所示:
# admin.py
from . import models
class Users(models.User):
class Meta:
proxy = True
class UsersAdmin(admin.ModelAdmin):
...
admin.site.register(Users, UsersAdmin)
【讨论】: