我怎么能像这样得order_by分呢……

p = Product.objects.filter(vendornumber='403516006')\
                   .order_by('-created').distinct('vendor__name')

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

希望这能说得通吧?

我收到此数据库错误:

SELECT DISTINCT ON表达式必须与初始ORDER BY表达式匹配 第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相关问答推荐

Django和静态文件

为特定表行更新或创建

通过 OrderingFilter 过滤平均和

使用自定义的AuthBackend时,无法使用request.user.is_authenticated或@login_required修饰符

DJANGO 获得模型中发现的第一、第二和第三大价值

lower() 在 None 上被调用

Django 表单字段必填和可选配置

相同的字符串不同的翻译

Django:想要将一个空字段显示为空白而不是显示无

Django:在模板中显示当前语言环境

Django Blob 模型字段

如何将 Django forms.ChoiceField 呈现为 Twitter Bootstrap 下拉菜单

Django -- User.DoesNotExist 不存在?

如何在 django admin 中显示布尔属性

python/django中setattr和对象操作的区别

用于创建和更新的基于 Django 类的视图

如何将本地文件分配给 Django 中的 FileField?

Django 多项 Select 字段/复选框 Select 多个

django.core.servers.basehttp.FileWrapper 在 Django 1.9 中消失

Django: Force强制 Select 相关?