QuerySet: TypeError - PullRequest
       2

QuerySet: TypeError

0 голосов
/ 02 февраля 2012

У меня есть этот код:

>>> 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?

Ответы [ 3 ]

4 голосов
/ 02 февраля 2012

Вы ищете values_list.Передайте ему аргумент flat, и вы сразу получите список идентификаторов продуктов.Ваш поиск не удался, потому что ValuesQuerySet может быть разрезан или проиндексирован целым числом.

MyModel.objects.values_list('product', flat=True)
# Out: [6, 1]  # this is a ValuesQuerySet that behaves like a list
1 голос
/ 02 февраля 2012
[x['product'] for x in d]

Должно дать [6, 1].

0 голосов
/ 02 февраля 2012

Вы получаете список словарей, а не сам словарь. Поэтому вам нужно перебирать их, чтобы накопить то, что вам нужно - таким образом, код Джона Цвинка.

...