【问题标题】:Using model inheritance, how could you order two different models differently in Django?使用模型继承,如何在 Django 中以不同的方式订购两个不同的模型?
【发布时间】:2014-01-12 15:00:07
【问题描述】:

我有一个名为 Photo 的模型和一个名为 Video 的模型。它们都继承了一个名为 Item 的模型,其中包含 time_created 字段和 item_by 字段。我知道您可以使用Item.objects.all().order_by('time_created') 从这两个不同的模型中订购对象。但是,我想按时间排序照片,按等级排序视频。我仍然想将这两个对象分组在一个查询集中,即使它们的顺序不同,这样我就可以将它显示在一个页面上(如网格)。我怎么能做到这一点? 谢谢!

【问题讨论】:

    标签: django django-models django-templates django-views


    【解决方案1】:

    我知道您可以通过覆盖子模型Meta ordering 属性来完成类似的操作。但是,如果没有看到您的模型代码(代理、抽象等),我无法确定这是否适合您。

    class Item(models.Model):
        time_created = models.DateField()
        rank = models.IntegerField()
    
    
    class Photo(Item):
        class Meta:
            ordering = ['time_created']
    
    
    class Video(Item):
        class Meta:
            ordering = ['rank']
    

    【讨论】:

    • 谢谢,我很快就会试一试。所以如果我调用 Item.objects.all(),如果第 1 和第 3 项是照片,第 2 和第 4 项是视频,那么第 1 项将在第 3 项之后创建,第 2 项将比第 4 项具有更高的排名?
    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 2012-09-18
    • 2021-05-28
    • 2014-09-22
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2019-12-04
    相关资源
    最近更新 更多