64
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.
48
Consider using models.ForeignKey(Question)
instead of question_id = IntegerField()
.
This is the optimal (more relational) way to express the relationship between Questions and Answers you are trying to portray.
This way you can simply call Answers.objects.filter(question_id=<id>)
and get exactly what you’re looking for.
- [Django]-How to get the current url namespace using Django?
- [Django]-Django class-based view: How do I pass additional parameters to the as_view method?
- [Django]-405 "Method POST is not allowed" in Django REST framework
15
class Question(models.Model):
title = models.CharField(max_length=70)
details = models.TextField()
class Answer(models.Model):
question = models.ForeignKey('Question')
details = models.TextField()
id = <whatever_id>
answers = Question.objects.get(id=id).answer_set.all()
- [Django]-How to test Django's UpdateView?
- [Django]-Django: Set foreign key using integer?
- [Django]-Django manage.py Unknown command: 'syncdb'
4
#Consider A Foreign Key Relationship Between Books And Publisher
class Publisher(models.Model):
name = models.CharField(max_length=100)
eclass Book(models.Model):
publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
#Fetch Publisher Name For A Book
book = Book.objects.select_related('publisher').get(id=1)
book.publisher.name
#Fetch books which have specific publisher
publisher = Publisher.objects.prefetch_related('book_set').get(id=1)
books = publisher.book_set.all()
for more
https://kwikl3arn.com/django/JOINS
- [Django]-Django: Overriding AND extending an app template
- [Django]-Django serializer Imagefield to get full URL
- [Django]-How to convert JSON data into a Python object?