On Wed, Jul 6, 2011 at 8:39 AM, Venkatraman S <venka...@gmail.com> wrote:
> > On Wed, Jul 6, 2011 at 12:36 AM, Venkatraman S <venka...@gmail.com> wrote: > >> I tried asking around in IRC, and stumbled on a few possible solutions, >> would be great if someone shed some more light: >> >> I have the following models: >> >> class Organization(models.Model): >> name = models.CharField(max_length=100, blank=False) >> >> class Employees(models.Model): >> org = models.ForeignKey(Organization, >> related_name='employees') >> user = models.ForeignKey(User) >> name = models.CharField(max_length=100, blank=False) >> >> class Item(models.Model): >> name = models.CharField(max_length=100, blank=False) >> created_by = >> models.ForeignKey(User,related_name='created_by_whom') >> >> Problem : I need to get all Items from the Organization to which current >> User belongs to. >> So basically, get all employees from the Org that the current User belongs >> to, and then get all items created by these employees. (So, this query >> should also include the current User). >> >> Say there are 3 Users in an org : A, B and C with each creating 3,4,5 >> items respectively, and 'A' is the current user; then i need a query which >> returns all these items(i.e, 12 items) when i supply A.. >> > > > This is the equivalent raw sql: > select count(1) > from myapp_items a > where a.created_by_id in > ( > select e.user_id > from myapp_employees e, myapp_organization o > where e.org_id = o.id > and o.id = (select o2.id from myapp_organization o2, myapp_employees e2 > where e2.org_id = o2.id and e2.user_id=<<current_user_id>>) > ) > > And this would be a probable query: Items.objects.extra(where=['created_by_id in (select e.user_id from myapp_employees e, myapp_organization o where e.org_id = o.id and o.id = (select o2.id from myapp_organization o2, myapp_employees e2 where e2.org_id = o2.id and e2.user_id=3)) ']).count() Can some expert in django-ORM comment on this? (can the same be done without a 'where' clause) As someone pointed out in IRC, i want to go up, down and then sideways in this query ;) -V -- 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.