I am working through the first example model in the documentation (http://www.djangoproject.com/documentation/models/basic/). Using that model as a reference, I can show the output here from the python interpeter that where the "|" operator generates an incorrect result (but the "&" operator seems to work OK):
all = Article.objects.all()
one = Article.objects.filter(id=1)
all
[<Article: Area womman programs in Python>, <Article: Second article>, <Article: Third article>, <Article: Fourth article>, <Article: Article 6>, <Article: Default headline>, <Article: Article 7>, <Article: Article 8>, <Article: Article 9>, <Article: Article 7>]
one
[<Article: Area womman programs in Python>]
all | one
[<Article: Area womman programs in Python>] <-- should be the union of the two QuerySets?, but it is not
all & one
[<Article: Area womman programs in Python>]
The operation: "all | one" should have been the union of these two ResultSets?, but here it is a list containing only a single object. Note that the intersection "all & one" is, however, correct. Here are a few more details:
import django
django.VERSION
(0, 95, 'post-magic-removal')
Specifically, this is for revision 3214.