@property的详细名称

时间:2014-03-21 16:09:18

标签: django django-models

我的

中有一个名为@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)

2 个答案:

答案 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。