Hi all,
I sometimes merge several queries together using |=. While this works
well for "normal" queries, producing the desired "ORed" result, when I
tried to do the same in a query using extra( where=["..."]) I got a
wrong result - the queries were "ANDed".
The following code demonstrates this:


>>> a = Article.objects.extra( where=["ID=7"])
>>> a[:]
[<Article: 7701x0075 (Biodiversity as a source of new pharmaco...)>]
>>> a |= Article.objects.filter( id=8)
>>> a[:]
[]
>>> connection.queries[-1]['sql']
'SELECT
`articles_article`.`id`,`articles_article`.`title`,`articles_article`.`subtitle`,`articles_article`.`page`,`articles_article`.`page_code`,`articles_article`.`last_page`,`articles_article`.`doi`,`articles_article`.`volume`,`articles_article`.`issue`,`articles_article`.`year`,`articles_article`.`abstract`,`articles_article`.`type`,`articles_article`.`conference_id`,`articles_article`.`errata_to_id`,`articles_article`.`add_to_title`,`articles_article`.`affiliation_line`,`articles_article`.`author_line`,`articles_article`.`based_on_line`,`articles_article`.`category`,`articles_article`.`subcategory`
FROM `articles_article` WHERE ID=7 AND ((`articles_article`.`id` = 8))
ORDER BY `articles_article`.`volume` ASC, `articles_article`.`issue`
ASC, `articles_article`.`page` ASC'


Just for record, here is the desired behavior that I get using
standard filter approach for both queries.

>>> b = Article.objects.filter( id=7)
>>> b[:]
[<Article: 7701x0075 (Biodiversity as a source of new pharmaco...)>]
>>> b |= Article.objects.filter( id=8)
>>> b[:]
[<Article: 7701x0075 (Biodiversity as a source of new pharmaco...)>,
<Article: 7701x0083 (Diverse metabolites of coral reef organi...)>]
>>> connection.queries[-1]['sql']
'SELECT
`articles_article`.`id`,`articles_article`.`title`,`articles_article`.`subtitle`,`articles_article`.`page`,`articles_article`.`page_code`,`articles_article`.`last_page`,`articles_article`.`doi`,`articles_article`.`volume`,`articles_article`.`issue`,`articles_article`.`year`,`articles_article`.`abstract`,`articles_article`.`type`,`articles_article`.`conference_id`,`articles_article`.`errata_to_id`,`articles_article`.`add_to_title`,`articles_article`.`affiliation_line`,`articles_article`.`author_line`,`articles_article`.`based_on_line`,`articles_article`.`category`,`articles_article`.`subcategory`
FROM `articles_article` WHERE ((`articles_article`.`id` = 7) OR
(`articles_article`.`id` = 8)) ORDER BY `articles_article`.`volume`
ASC, `articles_article`.`issue` ASC, `articles_article`.`page` ASC'

I have been trying to find if such a bug was already reported to no
avail. I do not follow the development of Django, so it might have
already been fixed in the development version and I just didn't find
it.
Should I file a bug report?

Best regards
Beda


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to