我的
中有一个名为@property
的{{1}}
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)
?
答案 0 :(得分:2)
无法为名为verbose_name
的{{1}}设置@property
,但是可以使用name
来代替:
short_description
这可能不适用于所有Django管理类,但将与基本的Django类一起使用。
这使用了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'
创建的fget
对象,并在其中设置了@property
属性。 Django查找该属性,并在可用时使用它。
答案 1 :(得分:0)
在文档中,建议使用以下代码对属性进行简短描述:
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',)
但是,这种方法在使用Django-tables2时不起作用,因此需要以下代码来更改列名:
columnName = tables.Column(verbose_name='column name')
Django-tables2: Change text displayed in column title
因此,最后,我认为如果遇到此类问题,您应该使用自定义表单并覆盖字段verbose_name。