【问题标题】:object_list of multiple models in djangodjango中多个模型的object_list
【发布时间】:2009-11-15 13:59:57
【问题描述】:

我有多个类似的抽象模型

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?,但它在我的情况下不起作用,因为我正在为这些使用抽象模型类(我只是没有在示例中显示它以使其简单明了尽可能)。我研究了继承而不是抽象,但我认为对常量连接的性能影响会造成损失。也许不是

【问题讨论】:

    标签: django django-models aggregate


    【解决方案1】:

    只需在您的视图中按created_date(或created_at,您都使用过)订购这两个模型,然后将结果合并到一个列表中。然后可以在您的模板中使用此列表。不需要模型继承或聚合模型。

    【讨论】:

      【解决方案2】:

      你有错别字... Class Article 应该是 Class Article 修复类到类(使其小写)

      【讨论】:

        猜你喜欢
        • 2018-05-07
        • 2012-01-28
        • 2013-03-31
        • 2019-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 2018-05-18
        相关资源
        最近更新 更多