Without looking into your problem in any real detail (sorry, late here), you could probably apply DeMorgan's Law and come up with a single predicate that you use throughout your query, using negation as appropriate. That may help you out.
-- Kevin On 9/5/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > I'm having trouble piecing together a query for this model: > > class Ticket(models.Model): > ... > assigned_user = models.ForeignKey(User) > name = models.CharField(maxlength=255) > private = models.BooleanField(default=False) > > I'm trying to get all the tickets where the tickets are not private OR > the ticket is private and assigned to the current user. > > I'm foggy on where I use the comma, pipe, and ampersand characters to > get the query structured properly. In pseudo-sql, I'd say "select * > where private = False or (private=True and username='snewman') > > I thought I was close with this, but it only returned tickets assigned > to me. (The parenthesis around the 2nd and 3rd Q's obviously didn't > help) > > Ticket.objects.filter(Q(private__exact=False) | > (Q(private__exact=True) & Q(assigned_user__username__exact='snewman'))) > > > > > -- Kevin --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---