Django / Python - 排序共享相同属性的不同Class对象?

问题描述 投票:1回答:1

所以我想说我在Django中有以下模型:

class Review(models.Model): 
    datetime = models.DateTimeField(("Date"), default=timezone.now)

class Rating(models.Model): 
    datetime = models.DateTimeField(("Date"), default=timezone.now)

我的观点看起来像这样:

def get_page(request, id_slug):
    context_dict = {}
    reviews = Review.objects.filter(attribute=id_slug).order_by('-datetime')
    ratings = Rating.objects.filter(attribute=id_slug).order_by('-datetime')
    context_dict['reviews'] = reviews
    context_dict['ratings'] = ratings
return render(request, 'page.html', context_dict)

我想要做的是创建一个查询集,其中包括由datetime属性排序的Review和Rating对象,如下所示:

activity =  reviewsANDratings.order_by('-datetime')
context_dict['activity'] = activity

实现这一目标的最佳方法是什么?

谢谢!

python django sorting
1个回答
0
投票

如果你的模型基本上是相同的东西,或彼此的父母/孩子,考虑使用Django polymorphic,这将让你在一个Review获得所有Ratings和PolymorphicQuerySets。

对于更多不同的模型,(或者为了更简单的实现),只需执行两个查询,就像现在一样,并在Python中合并项目,如下所示:

reviews_and_ratings = sum([list(reviews), list(ratings)], [])
reviews_and_ratings.sort(key=lambda item: item.datetime, reverse=True)
context_dict['reviews_and_ratings'] = reviews_and_ratings
© www.soinside.com 2019 - 2024. All rights reserved.