django:导致没有ID的批量样式

django:导致没有ID的批量样式,django,django-models,Django,Django Models,在django 1.1.1中,Place.objects.in_bulk()不起作用,而Place.objects.in_bulk(范围(1100))起作用并返回一个包含索引-主键的整数字典。 如何避免在这种情况下使用range(并避免对id使用特殊查询,我只想获取此字典格式的所有对象) >Place.objects.in_bulk() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/usr/lib/python2.5/site packages/Django-1.1.1-py2.

在django 1.1.1中,
Place.objects.in_bulk()
不起作用,而
Place.objects.in_bulk(范围(1100))
起作用并返回一个包含索引-主键的整数字典。 如何避免在这种情况下使用range(并避免对id使用特殊查询,我只想获取此字典格式的所有对象)

>Place.objects.in_bulk()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.5/site packages/Django-1.1.1-py2.5.egg/Django/db/models/manager.py”,第144行,散装
在批量(*args,**kwargs)中返回self.get\u query\u set()
TypeError:in_bulk()正好接受2个参数(给定1个)
>>>批量放置对象(范围(1100))
{1L:,3L:,4L:,5L:,8L:,9L:,10L:,11L:,14L:}
这将起作用:

dict((obj._get_pk_val(), obj) for obj in Place.objects.all())
它本质上就是批量
中没有ID列表时所做的事情

在大多数情况下,如果你没有弄乱pk名称,你可以用
obj.pk
替换
obj.\u get\u pk\u val()

我想你需要这个:

Place.objects.in_bulk(Place.objects.all().values('id'))

它将生成两个查询,这对于任务来说是不必要的
Place.objects.in_bulk(Place.objects.all().values('id'))