Ubuntu 13.04でPython 2.7でDjango 1.4を使用しています。
Django でのリレーションシップの使用order_by()
とクロス関係に問題があることは知っています。distinct()
これを克服するために提案されている解決策のほとんどは、集約を使用することです。私の場合、これを行う方法がわかりません。
QuerySet
事前にフィルタリングされた があります。2 つのフィールドで並べ替えてから、個別の外部キーで結果を取得する必要があります。
class Contract(models.Model):
rpl = models.DecimalField(max_digits=20, decimal_places=2, default=0)
priority = models.IntegerField(default=0)
class Offer(models.Model):
contract = models.ForeignKey(Contract)
product = models.ForeignKey(Product)
最初に契約の優先順位、次に契約 rpl の順に並べられたオファーのリストを取得する必要があります。その結果、異なる製品のオファーが必要です。
qs.order_by('-contract__priority', '-contract__rpl').distinct('product')
Djangoでこれをエレガントに行うにはどうすればよいですか?