我正在用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)
   .......

我的想法是做这样的事情
  BookingCatalog.objects.filter (...).order_by ('-rank', 'boat', 'is_skippered').distinct ('boat')

不幸的是,这不起作用,因为我正在使用引发此异常的postgres:
在表达式上选择DISTINCT必须与初始ORDER BY表达式匹配
我该怎么做呢?

最佳答案

The distinct argument has to match the first order argument。尝试使用此:

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

10-07 13:28