2010-09-26 20 views
9

Django'da, aşağıdaki gibi iki farklı değer almak için nasıl sorgu yaparsınız? Bu görev için bir Q() nesneOR durumu kullanılarak Django sorgusu

profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or 
        pSetting.objects.get(module="my_mod", setting_value=0)) 

cevap

10

Ödeme Django'nın Q-class: Ayrıca

profile_setting = pSetting.objects.get(Q(module="my_mod"),\ 
        Q(setting_value=1)|Q(setting_value=0)) 

artırmak için kodlama örnekte Complex Queries with Q() object

stil, bazıbir göz atın, model sınıfınızı daha iyi adlandırmalısınız PSetting.

+0

Stil hakkında hemfikirim - stil rehberi için Python'un PEP8'ini (http://www.python.org/dev/peps/pep-0008/) de inceleyin. – bx2

3

var - buraya bakın:

profile_setting = pSetting.objects.get(
    Q(module="my_mod", setting_value=1) | Q(module="my_mod", setting_value=0) 
) 
1
profile_setting = pSetting.objects.get(module="my_mod",setting_value__in=[0,1]) 
4

Yalnızca bir nesne yakaladığınızdan emin misiniz? setting_value ama her şey aynı olduğundan

profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=0) 
         .filter(module="my_mod", setting_value__in=1) 

Ancak, sadece bakabilirsiniz: Eğer nesneler bir grup bir Sorgu Kümesi kapmak çalışıyorsanız

, yapmanız gereken hep birlikte zincir filtreleri olan bir liste veya tuple:

profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=[0,1]) 

(alexdb önerisi yukarıdaki ince ise ve size sorguya cevap olarak sadece bir nesne alacağınız anlamına eminseniz)

0

Bu sorgu türü için, bu belgeyi denetleyin link

ve özel sorununuz için birden çok sorgulama nesnesini (Q) queryset kullanımı için kullanabilirsiniz. VEYA koşulu için ve get() ve filter() işlevlerindeki AND koşulu için &.