Django选择对象in_bulk()

Rus*_*lan 3 django

我正在尝试使用in_bulk方法,尽管出现了问题

首先,我将值选择到需要批量选择的列表中:

states = StateObjectRelation.objects.filter(state=int(3), content_type=int(ctype.id))
Run Code Online (Sandbox Code Playgroud)

然后将它们转换为列表:

list = values_list('content_id', flat=True)
Run Code Online (Sandbox Code Playgroud)

现在选择in_bulk项:

projects = Project.objects.in_bulk(list)
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

异常值:
in_bulk()必须提供ID列表。

如果我打印出列表中的值,则会得到以下信息:

>>> print list
[1L]
>>> print list.values()
[{'state_id': 3L, 'content_id': 1L, 'id': 1L, 'content_type_id': 29L}]
Run Code Online (Sandbox Code Playgroud)

Her*_*aaf 5

首先,调用您的列表是一个错误list,因为这是Python中的保留字(函数)。但是对于您的问题,您需要做的就是首先列出您的查询列表,如下所示:

list2 = list(l)

或这样(较慢):

list2 = [l for l in list]

然后,您确实有了一个真实的list对象,而不仅仅是打印时看起来像一个对象的东西。现在您应该可以打电话了

projects = Project.objects.in_bulk(list2)