>
> We'll need a bit more information here, since the devil's always in the
> details. At a minimum, what is the output of
>
>         groupmembers.query.as_sql()
>
> There may be a problem with exclude and nested querysets. I just
> realised I haven't explicitly tested those.
>
> Also, which database are you using? There are lots of SQL variations
> between databases (for example, nested queries don't work with Oracle at
> the moment for an unusual reason that I'll fix later today).

I am using PostgreSQL 8.3.4 on OS X and on Linux. The output of that
command is:

('SELECT "auth_user"."id", "auth_user"."username",
"auth_user"."first_name", "auth_user"."last_name",
"auth_user"."email", "auth_user"."password", "auth_user"."is_staff",
"auth_user"."is_active", "auth_user"."is_superuser",
"auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user"
INNER JOIN "group_groupsofuser_group_members" ON ("auth_user"."id" =
"group_groupsofuser_group_members"."user_id") WHERE
("group_groupsofuser_group_members"."groupsofuser_id" = %s  AND NOT
("auth_user"."id" IN (SELECT U0."id", U0."id" FROM "auth_user" U0
INNER JOIN "group_groupsofuser_group_admins" U1 ON (U0."id" =
U1."user_id") WHERE U1."groupsofuser_id" = %s )))',
 (1, 1))

And my model looks like this:

class GroupsOfUser(models.Model):
    """
    Groups containing users for allowing them to build communities
    """
    name = models.CharField(_("Name"), max_length=50)
    description = models.TextField(_("Description"), blank=True,
help_text=_("Optional"))
    slug = models.SlugField()
    group_members = models.ManyToManyField(User, verbose_name="group
members", related_name="groupofumembers")
    group_admins = models.ManyToManyField(User, verbose_name="group
admins", related_name="groupofuadmins")
    group_owner = models.ForeignKey(User, verbose_name="group owner",
related_name="groupofuowner")
    date_created = models.DateTimeField(_("Creation date"),
auto_now_add=True)
    closed_group = models.BooleanField(_("Closed group"),
default=False)
    request_to_join = models.BooleanField(_("Users have to request to
join"), default=False)
    adult_content = models.BooleanField(_("18 and above only"),
default=False)
    group_picture = models.ImageField(_("Group image"),
upload_to="groupsimage/", blank=True, null=True)

    def __str__(self):
        return self.name

    def save(self):
        self.slug = slugify(self.name, instance=self)
        super(GroupsOfUser, self).save()

    class Meta:
        ordering = ['-date_created']

    def get_absolute_url(self):
        return ('groupdetail', [str(self.slug)])
    get_absolute_url = models.permalink(get_absolute_url)


In my views:

    try:
        requestedgroup = GroupsOfUser.objects.select_related().get
(slug=slug)
    except GroupsOfUser.DoesNotExist:
        objTemplate = loader.get_template('groups/
group_notfound.html')
        objContext = RequestContext(request, {
            'slug': slug,
        })
        return HttpResponse(objTemplate.render(objContext))

    # Bring back the requests for this group we might be an
administrator for.
    groupadminfor = request.user.groupofuadmins.all()
    groupreq = GroupsOfUserRequest.objects.filter(to_group__in = [grp
for grp in groupadminfor]).filter(to_group =
requestedgroup).select_related()
    isgroupadmin = request.user.groupofuadmins.filter(id =
requestedgroup.id)
    ismember = request.user.groupofumembers.filter(id =
requestedgroup.id)

    #Check to make sure that this isn't a closed group
    if requestedgroup.closed_group == True and ismember.count() < 1:
        logging.info('User trying to get to closed group')
        raise Http404

    groupadmins = requestedgroup.group_admins.values_list('id',
flat=True)
    groupmembers = requestedgroup.group_members.exclude
(id__in=groupadmins)


Any help will be appreciated.

--~--~---------~--~----~------------~-------~--~----~
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 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to