我有这段代码:
>>> d = HotelCheck.objects.filter(client=1,date_booked='2012-02-27').distinct('product').values('product')['product_id']
>>> d
[{'product': 6}, {'product': 1}]
我只希望输出为1
和6
。
所以我尝试了这个:
>>> d = HotelCheck.objects.filter(client=1,date_booked='2012-02-27').distinct('product').values('product')['product_id']
但我收到了这个错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 153, in __getitem__
raise TypeError
TypeError
有没有人对我如何只显示6
的值1
和product
)有任何想法?
答案 0 :(得分:4)
您正在寻找values_list
。传递flat
参数,您将直接获得产品ID列表。您的查找失败,因为ValuesQuerySet
只能被切片或整数索引。
MyModel.objects.values_list('product', flat=True)
# Out: [6, 1] # this is a ValuesQuerySet that behaves like a list
答案 1 :(得分:1)
[x['product'] for x in d]
应该给[6,1]。
答案 2 :(得分:0)
你回来了一个字典列表,而不是字典本身。所以你需要迭代它们来积累你需要的东西 - 因此John Zwinck的代码。