开发者

verbose_name for a model's method

开发者 https://www.devze.com 2022-12-31 03:23 出处:网络
How can I set a verbose_name for a model\'s method, so that it might be displayed in the admin\'s change_view form?

How can I set a verbose_name for a model's method, so that it might be displayed in the admin's change_view form?

example:

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

in admin.py:

class ArticleAdmin(admin.ModelAdmin):
    开发者_如何学Pythonreadonly_fields = ('created_weekday',)
    fields = ('title', 'created_weekday')

Now the label for created_weekday is "Created Weekday", but I'd like it to have a different label which should be i18nable using ugettext_lazy as well.

I've tried

    created_weekday.verbose_name=...

after the method, but that did not show any result. Is there a decorator or something I can use, so I could make my own "verbose_name" / "label" / whateverthename is?


list_display

created_weekday.short_description = 'Foo'

This solution requires the method to be defined in the ModelAdmin class. You can call a Model method (eg: get_created_weekday) from ModelAdmin like:

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

精彩评论

暂无评论...
验证码 换一张
取 消