On Nov 8, 3:40 pm, Andy <selforgani...@gmail.com> wrote: > I have a Q&A type of site with the following models: > > class Question(models.Model): > title = models.CharField(max_length=70) > details = models.TextField() > > class Answer(models.Model): > question_id = IntegerField() > details = models.TextField() > > I need to display a specific question together with its answers. > Normally I'd need 2 queries to do that: > > Question.objects.get(id=1) > Answer.objects.get(question_id=1)[:10] > > I'm hoping to retrieve everything using one query. In MySQL it'd be: > > SELECT * > FROM Question JOIN Answer ON Question.id=Answer.question_id > WHERE Question.id=1 > LIMIT 10 > > Is there anyway I could do this through Django's ORM? > Would extra() help in this case?
This is exactly what `select_related()` does. The only gotcha is that you have to start with the Answer model, rather than Question, but the result is the same: answers = Answer.objects.filter(question_id=1).select_related() Now each answer object has a pre-fetched 'question' attribute, and accessing it won't hit the db again. -- DR. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.