QuerySet:TypeError

时间:2012-02-02 01:57:10

标签: python django django-queryset

我有这段代码:

>>> d = HotelCheck.objects.filter(client=1,date_booked='2012-02-27').distinct('product').values('product')['product_id']
>>> d
[{'product': 6}, {'product': 1}]

我只希望输出为16

所以我尝试了这个:

>>> 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的值1product)有任何想法?

3 个答案:

答案 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的代码。