verbose_name用于模型的方法

时间:2010-05-23 18:55:16

标签: python django django-models django-admin

如何为模型的方法设置verbose_name,以便它可以显示在admin的change_view表单中?

示例:

class Article(models.Model):
    title = models.CharField(max_length=64)
    created_date = models.DateTimeField(....)
    def created_weekday(self):
        return self.created_date.strftime("%A")

在admin.py中:

class ArticleAdmin(admin.ModelAdmin):
    readonly_fields = ('created_weekday',)
    fields = ('title', 'created_weekday')

现在created_weekday的标签是“Created Weekday”,但我希望它有一个不同的标签,使用ugettext_lazy也应该是i18nable。

我试过

    created_weekday.verbose_name=...

在方法之后,但没有显示任何结果。是否有装饰师或我可以使用的东西,所以我可以制作自己的“verbose_name”/“label”/ whateverthename是吗?

1 个答案:

答案 0 :(得分:21)

list_display

created_weekday.short_description = 'Foo'

此解决方案需要在ModelAdmin类中定义方法。您可以从ModelAdmin调用Model方法(例如:get_created_weekday),如:

def created_weekday(self, obj):
    return obj.get_created_weekday()