[フレーム]
Last Updated: February 25, 2016
·
833
· pykler

Django OR querysets

One of Django's cool (maybe the coolest) and undocumented feature is being able to OR and AND queries using bitwise (&|) operators. It is a variation to the Q object that is documented.

for r in (
 MyTable.objects.filter(somefield='a') |
 MyTable.objects.filter(someotherfield='b')
).filter(somethird='c'):
 print r

Now this becomes really useful when you use related_managers:

for r in (
 aTableinstance.mytable_set.all() |
 xTableinstance.mytable_set.all()
):
 do_something_with(r)

while aTable and xTable are totally different instances yet they reference MyTable

AltStyle によって変換されたページ (->オリジナル) /