2016-08-19 60 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表達式匹配

我應該怎麼做呢?

回答

0

通過秩..ordering會給你每個副本的最低等級,但整體將查詢結果通過船場

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

責令有關更多信息,請參閱Django documentation 包括Postgres的