簡體   English   中英

Django / Python-對共享相同屬性的不同Class對象進行排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM