我正在尝试使用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)
首先,调用您的列表是一个错误list,因为这是Python中的保留字(函数)。但是对于您的问题,您需要做的就是首先列出您的查询列表,如下所示:
list2 = list(l)
或这样(较慢):
list2 = [l for l in list]
然后,您确实有了一个真实的list对象,而不仅仅是打印时看起来像一个对象的东西。现在您应该可以打电话了
projects = Project.objects.in_bulk(list2)