具有distinct()的Django order_by()过滤器

前端之家收集整理的这篇文章主要介绍了具有distinct()的Django order_by()过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我怎么可以像这样做一个order_by ….
p = Product.objects.filter(vendornumber='403516006')\
                   .order_by('-created').distinct('vendor__name')

问题是我有同一个名字的多个供应商,我只想要供应商的最新产品.

希望有意义吗?

我得到这个DB错误

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_by中的第一列,我认为它应该工作.

猜你在找的Python相关文章