Django OR querysets

Um dos recursos legais (talvez o mais legal) e não documentado do Django é a capacidade de fazer consultas OR e AND usando operadores bit a bit (& |). É uma variação do objeto Q que está documentado .

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

Agora, isso se torna realmente útil quando você usa related_managers:

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

enquanto aTable e xTable são instâncias totalmente diferentes, mas fazem referência a MyTable