Django Запрос с использованием внешнего ключа
Я начинаю работать с запросами в django и пытаюсь воспроизвести результаты join в sql.
У меня есть две модели, которые представляют родителя (WaiverAdult) и ребенка (WaiverMinor). Я хотел бы вернуть родителя и ребенка в наборе запросов, чтобы я мог сгруппировать их в отформатированном шаблоне, например, так:
Джон Папа Томми Сын Эмбер Дочь
Джен Джонс Стиви Джонс Майк Джонс
МОДЕЛИ:
class WaiverAdult(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50, blank=True)
class WaiverMinor(models.Model):
first_name = models.CharField(max_length=50, blank=True)
last_name = models.CharField(max_length=50, blank=True)
parent = models.ForeignKey(WaiverAdult, on_delete=models.CASCADE)
VIEW:
class WaiverListView(ListView):
template_name = 'waiver/waiver_list.html'
model = WaiverAdult
context_object_name = "waiver_list"
queryset = WaiverAdult.objects.order_by('created')
Как правильно написать этот запрос? Заранее благодарю. Я искренне признателен за рекомендации.
Если вы хотите получить доступ к связанным объектам, лучшим способом будет их предварительная выборка, чтобы не обращаться к базе данных каждый раз, когда вы хотите получить доступ к связанному объекту. Это можно сделать следующим образом:
waiver_adults = WaiverAdult.objects.all().prefetch_related('waiverminor_set').order_by('created')
Теперь, когда вы это сделали, вы можете получить доступ к связанным объектам без повторного обращения к базе данных следующим образом:
[adult.waiverminor_set.all() for adult in waiver_adults]