2016-08-19 8 views
1

私はpostgresでdjangoを実行しています。テーブルからレコードを照会し、ランク別にソートし、外部キーに関して一意のエントリを取得する必要があります。django + postgresと別名を選択

基本的に私のモデルは、このようなものです:

class BookingCatalog(models.Model): 
    ....... 
    boat = models.ForeignKey(Boat, verbose_name=u"Boat", related_name="booking_catalog") 
    is_skippered = models.BooleanField(u'Is Skippered',choices=SKIPPER_CHOICE, default=False) 
    rank = models.IntegerField(u"Rank", default=0, db_index=True) 
    ....... 

アイデアは、残念ながら、この

BookingCatalog.objects.filter (...).order_by ('-rank', 'boat', 'is_skippered').distinct ('boat') 

のようなものを実行することです、私はこの例外を発生させるのpostgresを使用しておりますので、これが動作していません。

SELECT DISTINCT ON式は、最初のORDER BY式と一致する必要があります。

代わりに何をすればよいですか? -rankによって

答えて

0

..orderingは複製あなたにそれぞれの最低ランクを与えるだろうが、あなたの全体的なクエリの結果は、ボートのフィールドでの詳細については

BookingCatalog.objects.filter (...).order_by('boat','-rank','is_skippered').distinct('boat') 

を注文することになる、Postgresの

を含め Django documentation を参照してください。