我有这样的模型
class Product(models.Model):
created_at = models.DateTimeField(default=timezone.now)
cell = models.CharField(max_length=100, null=True)
现在我需要一个必须按创建日期和唯一单元格排序的查询集,类似于Product.objects.order_by('created_at').distinct('cell')
,但我得到了一个sql错误。
django.db.utils.ProgrammingError: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
LINE 1: SELECT DISTINCT ON ("apps_product"."cell")
应如何更改查询集以获得所需的结果?
2条答案
按热度按时间jdzmm42g1#
根据错误消息,您应该尝试:
Product.objects.order_by('cell', '-created_at').distinct('cell')
q7solyqu2#
如果没有子查询,当前无法执行此操作。存在一个开放的feature request,它允许以下查询:
如果你现在尝试这个查询(从Django 4.1.7开始),它会失败,并显示和你发布的相同的错误消息。
正如功能请求下的注解所解释的那样,您可以尝试以下操作: