Hello all,
I've run into a problem when trying to add some simple search
functionality to my app. I've got a model with several M2Ms and I'm
trying to construct some OR queries using Q().
Here's a simplified example:
Model:
class Article(models.Model):
authors = models.ManyToManyField(User, blank=True, null=True)
pictures = models.ManyToManyField(Picture, blank=True, null=True)
View:
def search(request):
if request.POST:
q = Q()
for term in request.POST["searchTerms"].split():
q = q | Q(authors__name=term)
q = q | Q(pictures__title=term)
results = Article.objects.filter(q)
return render_to_response('search.html', {'results': results})
My problem arises when an Article has authors but no pictures (or vice
versa). If this is the case then the join with the Pictures table
fails to produce anything and I get no results. If an Article has a
Picture then results are returned even if the term only matches on
authors__name.
Is there something I'm missing?
Any pointers or suggestions welcome.
Regards,
Felix
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---