[英]Django / Python - sorting different Class objects sharing the same attribute?
假設我在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)
我想要做的是創建一個查詢集,其中將同時包含Review和Rating對象,並按datetime屬性對其進行排序,如下所示:
activity = reviewsANDratings.order_by('-datetime')
context_dict['activity'] = activity
實現這一目標的最佳方法是什么?
謝謝!
如果您的模型基本上是相同的,或者是彼此的父/子,請考慮使用Django polymorphic ,這將使您在一個PolymorphicQuerySet
獲得所有Review
和 Rating
。
對於更不同的模型(或更簡單的實現),只需像現在一樣執行兩個查詢,然后像這樣合並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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.