2013-11-14 14 views
7

Bu davranışı gözlemledim ve tam olarak anlamadım.Django: prefetch_related/select_related ile birlikte değerler_listesindeki değerin olup olmadığını kontrol edin

result = model.objects.all() 
result_pks = result.values_list("id",flat=True) 
print result_pks 

Ve olsun:

val = 2 
print val in result_pks 

Bu:

[1,2,3,4] 

Sonra belli bir değer pks listesinde olup olmadığını kontrol etmek istiyorum döndü ben bir sorgu yapmak diyelim True döndürecektir, ancak bunun yerine sonucu değiştirirseniz:

Hala alıyorum:

[1,2,3,4] 

Ama ne zaman:

val=2 
print val in result_pks 

Ben False olsun. Bunun yerine select_related kullanmayı denedim ve beklediğim gibi True döndürdü. Birisi bana neden farkı açıklayabilir?

+0

Hangi Django sürümünü kullanıyorsunuz? –

cevap

7

Django 1.5 kullanıyor musunuz?

prefetch_related: bug 20242 kullanırken in aramasının başarısız olmasına neden olan bir hata oluştu.

Bu Django 1.6'da giderilmiştir.

+0

Yani, düzeltme, print-print-list (result_pks) 'olabilir – karthikr

+0

Teşekkürler. Ben GAE – CoffeeJack

+0

@ CoffeeJack nedeniyle 1.4 kullanıyorum: hata ne zaman tanıtıldığından emin değil ama Django 1.4 de olabilir. –

İlgili konular