模型方法的verbose_name

17 投票
1 回答
11214 浏览
提问于 2025-04-15 23:03
    created_weekday.verbose_name=...

我该如何为模型的方法设置一个可读性强的名称,这样它就可以在管理界面的修改视图表单中显示出来呢?

举个例子:

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 的标签是“创建的星期几”,但我希望它有一个不同的标签,并且这个标签应该可以使用 ugettext_lazy 进行国际化。

我尝试过在方法后面加一些东西,但没有任何效果。有没有什么装饰器或者其他方法可以让我自己定义一个“可读性强的名称”/“标签”/或者其他什么名字呢?

1 个回答

23

list_display

created_weekday.short_description = 'Foo'

这个解决方案需要在ModelAdmin类中定义一个方法。你可以像下面这样从ModelAdmin中调用一个模型的方法(比如:get_created_weekday):

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

撰写回答