首页 > 解决方案 > Django in_bulk() 使用 distinct() 引发错误

问题描述

我有以下查询集:

MyModel.objects
.order_by("foreign_key_id")
.distinct("foreign_key_id")
.in_bulk(field_name="foreign_key_id")

foreign_key_id不是唯一的,MyModeldistinct在 QuerySet 中使用应该是唯一的。

但是,当它运行时,会引发以下错误:

"ValueError: in_bulk()'s field_name must be a unique field but 'foreign_key_id' isn't."

根据in_bulk 此处的 Django 文档,应该可以使用in_bulkwithdistinct这种方式。该功能已添加到 Django 以响应此处的问题单

我需要在这里改变什么才能使这项工作?

我将 Django3.1 与 Postgres11 一起使用。

标签: djangodjango-modelsdjango-queryset

解决方案


As the documentation of in_bulk(…) says:

(…)

Changed in Django 3.2:

Using a distinct field was allowed.

Since you use , this will thus not work, you will thus have to upgrade your program to .


推荐阅读