Django 按对象的“创建日期”属性对来自不同模型的queryset对象列表进行排序

Django 按对象的“创建日期”属性对来自不同模型的queryset对象列表进行排序,django,sorting,django-queryset,Django,Sorting,Django Queryset,我有不同的型号,所有型号都有一个名为“date_created”的“DateTimeField”。我需要从所有模型中选择所有对象,按“date_created”字段对它们进行排序,然后作为列表返回 我尝试了以下方法: models.py class FirstModel(models.Model): title = models.CharField(max_length=100) date_created = models.DateTimeField() class Seco

我有不同的型号,所有型号都有一个名为“date_created”的“DateTimeField”。我需要从所有模型中选择所有对象,按“date_created”字段对它们进行排序,然后作为列表返回

我尝试了以下方法:

models.py

class FirstModel(models.Model):
    title = models.CharField(max_length=100)
    date_created = models.DateTimeField()


class SecondModel(models.Model):
    title = models.CharField(max_length=100)
    date_created = models.DateTimeField()
views.py

def browse(request):
    object_list = []
    for model in get_models(get_app('myapp')):
        object_list.append(model.objects.order_by('-date_created').all())
    object_list = sorted(object_list, key=attrgetter('date_created'))
    context = {'data': object_list}
    return render(request, 'myapp/browse.html', context)
我发现错误“QuerySet”对象没有属性“date\u created”

这些模型还有其他与这个问题无关的领域。我可以使用一个公共基类将所有对象集合在一起(我想),但出于某种原因,我使用了一个抽象基类。我怀疑可以使用“连接”,但我不知道怎么做


那么,如何按创建日期属性对该对象列表(不同模型的对象列表)进行排序?

我认为您应该替换此代码

object_list.append(model.objects.order_by('-date_created').all())
object_list = sorted(object_list, key=attrgetter('date_created'))
使用此代码:

object_list.append(model.objects.all().order_by('-date_created'))
我认为你不需要使用这个代码

object_list.append(model.objects.order_by('-date_created').all())
object_list = sorted(object_list, key=attrgetter('date_created'))

因为您已经使用“排序依据”进行了排序,我通过进一步研究找到了答案

问题出在这一行:

object_list.append(model.objects.order_by('-date_created').all())
当我使用“append”时,它被视为一个普通的列表,而不是queryset对象的列表{我对此有点不确定,基本上这一行给了我一个列表,其中我只需要一个所有queryset对象的列表。}要从itertools更正此问题,可以通过导入链并替换上面的行来使用,如下所示:

from itertools import chain
...
...
object_list = chain(object_list, (model.objects.order_by('-date_created').all()))
...

休息吧,一切都好。此外,正如问题中所指出的,可以使用它,通过使用
order\u by

在单个查询中对所有结果进行排序。实际上,您所说的将从不同的模型中获得排序列表,但我需要对最终列表进行排序,即所有单独排序的模型对象列表的组合。