【问题标题】:How does one add a computed column to a django model's list page?如何将计算列添加到 django 模型的列表页面?
【发布时间】:2015-04-13 23:14:05
【问题描述】:

我有一个模特,

class Thingie(models.Model):
    thingie_name = models.CharField(max_length=16, unique=True)
    interesting_property = models.BogusField(...) 

...在 admin.py 中:

class ThingieAdmin(adimn.ModelAdmin):
    list_display = ('thingie_name', 'interesting_property')

当我查看管理页面时,我看到如下内容:

Select Thingie to change

Thingie name    | Interesting property
monkey_nuggets  | you really don't want to know
yodeling_yoda   | this is going downhill fast

我想要在这里有第三个字段,一个生成的 URL:

Thingie name    | ... | For more info...
monkey_nuggets  | ... | http://foo.com/thingie/monkey_nuggets
yodeling_yoda   | ... | http://foo.com/thingie/yodeling_yoda

请注意,我不希望将人们发送到此属性的编辑页面。我只需要一种方法来影响视图的呈现,即我可以插入一个不受数据库支持的自定义列,它只是根据其他值之一计算。

【问题讨论】:

    标签: django templates views


    【解决方案1】:

    您可以在模型管理中定义一个方法来执行此操作。

    class ThingieAdmin(admin.ModelAdmin):
        list_display = ('thingie_name', 'interesting_property', 'computed_property',)
    
        def computed_property(self, obj):
            # Do anything here
            return value
    

    【讨论】:

    • 我在四处寻找时发现了大约相同的答案,但我缺少的是我需要添加(到 ThingieAdmin)computed_property.allow_tags = True。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2012-06-18
    • 2021-03-07
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多