如何制作这样的 order_by
....
p = Product.objects.filter(vendornumber='403516006')\
.order_by('-created').distinct('vendor__name')
问题是我有多个同名的供应商,我只想要供应商的最新产品..
希望它有意义?
我遇到了这个数据库错误:
SELECT DISTINCT ON expressions must match initial ORDER BY expressions LINE 1: SELECT DISTINCT ON ("search_vendor"."name") "search_product"...
最佳答案
根据您的错误消息和 this other question ,在我看来这会解决它:
p = Product.objects.filter(vendornumber='403516006')\
.order_by('vendor__name', '-created').distinct('vendor__name')
也就是说,DISTINCT ON
表达式似乎必须匹配最左边的 ORDER BY
表达式。因此,通过将您在 distinct
中使用的列作为 order_by
中的第一列,我认为它应该有效。
关于Django order_by() 过滤器与 distinct(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20582966/