In Django, wie fragen Sie nach zwei verschiedenen Werten, wie im Folgenden?Django Abfrage mit OR-Bedingung
profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
pSetting.objects.get(module="my_mod", setting_value=0))
In Django, wie fragen Sie nach zwei verschiedenen Werten, wie im Folgenden?Django Abfrage mit OR-Bedingung
profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
pSetting.objects.get(module="my_mod", setting_value=0))
Kasse Djangos Q
-class:
profile_setting = pSetting.objects.get(Q(module="my_mod"),\
Q(setting_value=1)|Q(setting_value=0))
Weiterhin Ihre Codierung zu verbessern Stil, werfen Sie einen Blick auf einige coding guidelines, sollten Sie besser Ihre Modellklasse PSetting
nennen.
Es gibt ein Q()
Objekt für diese Aufgabe - hier: Complex Queries with Q() object
Im Beispiel:
profile_setting = pSetting.objects.get(
Q(module="my_mod", setting_value=1) | Q(module="my_mod", setting_value=0)
)
profile_setting = pSetting.objects.get(module="my_mod",setting_value__in=[0,1])
Sind Sie sicher, dass Sie nur ein Objekt greifen?
Wenn Sie eine queryset eines Bündels von Gegenständen zu greifen versuchen, alles, was Sie tun müssen, um Ketten Filter zusammen:
profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=0)
.filter(module="my_mod", setting_value__in=1)
Da jedoch alles andere als SETTING_VALUE gleich ist, können Sie einfach nach eine Liste oder Tupel:
profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=[0,1])
(alexdb Vorschlag oben ist in Ordnung, wenn und nur wenn Sie sicher sind, dass Sie nur ein Objekt als eine Antwort auf Ihre Frage bekommen würden)
Für diese Art von Abfrage überprüfen Sie diese Dokumentation link
und für Ihr spezifisches Problem können Sie mehrere Queryset-Objekte (Q) für die Verwendung von queryset übergeben | für OR-Bedingung und & für UND-Bedingung in den Funktionen get() und filter().
Ich stimme dem Stil zu - siehe auch Python's PEP8 (http://www.python.org/dev/peps/pep-0008/) für Style Guide. – bx2