Sae*_*aeX 8 django django-models
我有一个@property
叫name
我
class Person(models.Model):
first_name = models.CharField("Given name", max_length=255)
last_name = models.CharField("Family name ", max_length=255)
@property
def name(self):
return "%s %s" % (self.first_name, self.last_name)
Run Code Online (Sandbox Code Playgroud)
是否可以轻松指定verbose_name
此属性?
Averbose_name
不能为@property
被调用的设置name
,但short_description
可以代替使用:
class Person(models.Model):
first_name = models.CharField('Given name', max_length=255)
last_name = models.CharField('Family name ', max_length=255)
@property
def name(self):
return '%s %s' % (self.first_name, self.last_name)
name.fget.short_description = 'First and last name'
Run Code Online (Sandbox Code Playgroud)
这可能不适用于所有 Django 管理类,但它适用于基本类。
这将使用由fget
创建的对象@property
并short_description
在其中设置一个属性。Django 查找该属性并在可用时使用它。
在文档中,建议使用以下代码来给出属性简短描述:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def my_property(self):
return self.first_name + ' ' + self.last_name
my_property.short_description = "Full name of the person"
full_name = property(my_property)
class PersonAdmin(admin.ModelAdmin):
list_display = ('full_name',)
Run Code Online (Sandbox Code Playgroud)
但是,这种方法在使用 Django-tables2 时不起作用,因此需要以下代码才能更改列名称:
columnName = tables.Column(verbose_name='column name')
Run Code Online (Sandbox Code Playgroud)
所以最后我认为如果您遇到这样的问题,您应该使用自定义表单并覆盖字段 verbose_name 。
归档时间: |
|
查看次数: |
2740 次 |
最近记录: |