2012-02-02 2 views
0

는이 코드가 있습니다검색어 세트 : 형식 오류

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

사람이 (61) 난 단지 값을 표시 할 수있는 방법에 어떤 아이디어가 있습니까의를 product?

답변

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
[x['product'] for x in d] 

[6, 1]을 제공해야합니다.

0

사전 자체가 아닌 사전 목록이 반환됩니다. 따라서 필요한 것을 누적하기 위해 반복해야합니다. 따라서 John Zwinck의 코드입니다.