我有多个与此类似的抽象模型
Class Article(models.Model):
title = models.CharField()
body = models.TextField()
created_date = models.DateTimeField()
author_name = models.CharField()
class Video(models.Model):
title = models.CharField()
body = models.TextField()
created_date = models.DateTimeField()
video_asset = models.CharField()
现在,在特定页面上,我想基于created_date将这两个模型聚合到一个列表中。我想知道的所有模型都有title
和created_date
,所以我可以这样做:
<ul>
{% for object in object_list %}
<li>{{ object.title }} on {{ object.created_at }}</li>
{% endfor %}
</ul>
我可以指望那些领域没有问题。
我考虑过创建一个额外的模型并使用通用外键。有点像聚合模型。然后每次创建一个新对象时,我只会发出一个要创建的对象,然后从这个通用表中拉出来。我不喜欢这个想法。似乎高度多余。
有没有?
更新:我找到了这个条目Using django how can I combine two queries from separate models into one query?,但它在我的情况下不起作用,因为我正在使用抽象模型类(我只是在示例中没有显示它以保持简单并尽可能清楚)。我研究了继承而不是抽象,但我认为不断加入的性能会受到影响。也许不是
答案 0 :(得分:2)
只需在视图中按created_date
(或created_at
(两者都使用))对两个模型进行排序,然后将结果合并到一个列表中。然后可以在模板中使用此列表。不需要模型继承或聚合模型。
答案 1 :(得分:1)
你有错别字...类文章应该是类文章 将类修复为类(使其为小写)