django + postgres 并选择不同的

Wal*_*ini 3 django postgresql django-models

我正在使用 postgres 运行 django,我需要从表中查询一些记录,按等级对它们进行排序,并获得关于外键的唯一条目。

基本上我的模型是这样的:

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)
   .......
Run Code Online (Sandbox Code Playgroud)

这个想法是运行这样的东西

  BookingCatalog.objects.filter (...).order_by ('-rank', 'boat', 'is_skippered').distinct ('boat')
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为我使用的是 postgres,它引发了这个异常:

SELECT DISTINCT ON 表达式必须匹配初始 ORDER BY 表达式

我应该怎么做?

NS0*_*NS0 5

distinct 参数必须与一阶参数匹配。尝试使用这个:

BookingCatalog.objects.filter(...) \
                      .order_by('boat', '-rank', 'is_skippered') \
                      .distinct('boat')
Run Code Online (Sandbox Code Playgroud)