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