如何将计算列添加到 django 模型的列表页面?
Posted
技术标签:
【中文标题】如何将计算列添加到 django 模型的列表页面?【英文标题】:How does one add a computed column to a django model's list page? 【发布时间】: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
请注意,我不希望将人们发送到此属性的编辑页面。我只需要一种方法来影响视图的呈现,即我可以插入一个不受数据库支持的自定义列,它只是根据其他值之一计算。
【问题讨论】:
【参考方案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。以上是关于如何将计算列添加到 django 模型的列表页面?的主要内容,如果未能解决你的问题,请参考以下文章
Django将硬编码的href链接添加到管理模型的表单视图页面
Django:我可以通过单个方法调用将新模型实例列表添加到数据库吗?