私は私のビューのいずれかでフィルタを考え出すの問題を抱えています。私は、ブログエントリ、ニュース記事、およびレビューでサイトを作成しています。エントリーと記事は、レビューがどちらのタグにもタグを付けることができるため、レビューと一般的な関係を持ちます。私は何をしようとしていること評価特定の日付より新しい口コミのの合計に基づいてエントリ/記事をソートすることです。ここで Djangoの一般的な関係の問題
は単純化されたモデルです。だから、私は合計を見つけるために必要なことを考えるとclass Entry(models.Model):
name = models.CharField(max_length=50)
reviews = generic.GenericRelation(Review)
class Article(models.Model):
name = models.CharField(max_length=50)
reviews = generic.GenericRelation(Review)
class Review(models.Model):
rating = models.IntegerField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
target = generic.GenericForeignKey('content_type', 'object_id')
timestamp = models.DateTimeField(auto_now_add=True)
は、私が注釈を付けると集計使ってみましたが、私は2つの問題に遭遇しました。最初の1つは明らかに一般的な関係であり、アノテーションは一緒にうまく機能しません:https://code.djangoproject.com/ticket/10461。 2番目の問題は、レビューの一部(この場合、timestamp__gte = datetime.now())を合計するだけでは不十分だと思うということです。私はこれを間違った方法でやっていますか?そう私ができる
Review.filter(timestamp__gte=datetime.now(), target__in=something).aggregate(Sum('rating'))
しかし、私はこれに基づいてレビューを注文しようとしていることから、私はReview.somethingで起動する必要はありません。私はまた、他の方法の周りにこれを行うことについて考え
order_byを使用しますか?
ありがとうございました。
こんにちはあるUdi。私は少しこれについて考え、このセットアップが私の元の質問にどのように答えるかを見ない。私はまだ 'ReviewedItem.annotate(Sum(subset_of_reviews))。order_by( 'Review')'を実行する必要があると信じており、これは存在しないようです。私はこれに正しく行きますか? – mwlow