I am trying to use in_bulk method, although something goes wrong
First I pick values into list that I need to select in bulk:
states = StateObjectRelation.objects.filter(state=int(3), content_type=int(ctype.id))
Then convert them to list:
list = values_list('content_id', flat=True)
Now selecting the items in_bulk:
projects = Project.objects.in_bulk(list)
Give me the following error:
Exception Value:
in_bulk() must be provided with a list of IDs.
If i print out the values that are in list I get the following:
>>> print list
[1L]
>>> print list.values()
[{'state_id': 3L, 'content_id': 1L, 'id': 1L, 'content_type_id': 29L}]
Firstly, it's a mistake to call your list list
, since that's a reserved word (function) in Python. But as for your question, all you need to do is make a list of your query first, like this:
list2 = list(l)
or like this (slower):
list2 = [l for l in list]
Then you really have a real list
object, and not just something that appears like one when you print it. Now you should be able to call
projects = Project.objects.in_bulk(list2)
I would simply do it like that, using list()
:
ids = list(your_queryset.values_list('content_id', flat=True))
projects = Project.objects.in_bulk(ids)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With