An other case where I get empty result sets unexpectedly is when I
want to join 2 querysets, one holding the objects that the current
user entered and the other holds the objects marked as favorite by the
current user.

I have a manager for Favorite objects that takes the model and the
user and returns a queryset for that model that are marked as
favorites by the given user:

class FavoriteManager(models.Manager):
  def get_by_user(self, Model, user):
    ctype = ContentType.objects.get_for_model(Model)
    rel_table = qn(self.model._meta.db_table)
    return Model._default_manager.extra(
      tables=[self.model._meta.db_table], # Use a non-explicit join
      where=[
        '%s.content_type_id = %%s' % rel_table,
        '%s.user_id = %%s' % rel_table,
        '%s.%s = %s.object_id' % (qn(Model._meta.db_table),
                                  qn(Model._meta.pk.column),
                                  rel_table)
      ],
      params=[ctype.id, user.id],
    )


And when called like this:
Favorite.objects.get_by_user(Note, user)

the result is a QuerySet containing Note objects which are favorites
of the given user. The structure of the QuerySet is exactly the same
as the result of a query set generated by Note.objects.

But when I try to get the union such as

Note.objects.all() | Favorite.objects.get_by_user(Note, user)

The result is a QuerySet objects with no elemnts in it.


Thanks...


On May 22, 4:38 pm, omat <[EMAIL PROTECTED]> wrote:
> Hi,
>
> The "bitwise or" ('|') works fine when taking the union of query sets
> such as:
> Note.objects.filter(tag='foo') | Note.objects.filter(tag='bar')
>
> But the result of following is an EmptyQuerySet object:
> Note.objects.filter(tag='foo') | Note.objects.none()
>
> Shouldn't it be equivalent to Note.objects.filter(tag='foo'). Am I
> missing something?
>
> Thanks,
> omat
--~--~---------~--~----~------------~-------~--~----~
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