Wednesday, July 28, 2010

Re: Django INNER JOIN

Dear Kostia

On Jul 28, 2010, at 2:29 PM, kostia wrote:
> I have a model Favourite with fields User, Project, Date, what means
> that some user put some project as favourite on some date. I take all
> favourites filtered by this user and I want to INNER JOIN that info
> with Project model. How can I do that?
>
> Something like projects = Favourite.objects.filter(user =
> request.user).inner_join(Project, project)

Try not to think to relational, Django's models are OO.

To get the projects, you can do:

projects = Project.objects.filter(favourites__user = request.user)

To get something more like the join:

favourites = Favourites.objects.filter(user = request.user)

And then, if you need a project for any favourite, do
favourite.project. If you want, you can also do:

fav_and_projs = ((f, f.project) for f in favourites)

Note that you can use "select_related('project')" if performance is an
issue for you.


Cheers, Roald

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

No comments:

Post a Comment