python - 模型方法的详细名称

标签 python django django-models django-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”,但我希望它有一个不同的标签,也应该是 i18nable 使用 ugettext_lazy。

我试过了

    created_weekday.verbose_name=...

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

最佳答案

list_display

created_weekday.short_description = 'Foo'

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

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

关于python - 模型方法的详细名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2892999/

相关文章:

MySQL 响应时间定期出现峰值

python - django 相关管理器 - 在模板中

python - 配置 Django/Wagtail 媒体以使用 S3

python - Curl 可以工作,但 python requests 不行

Python:从 url 获取 shoutcast/internet 广播电台的名称

django - 在 Django 中删除子对象时删除父对象

django - 如何在 Django 的多个 ForeignKey 字段中强制执行不同的值

python - 唯一一起涉及多个外键和多对多字段

python - 引用子类中的类成员

python - 交叉验证和文本分类