[英]Django Query using Foreign Key
我開始使用 django 中的查詢,並嘗試在 sql 中復制連接的結果。
我有兩個模型代表父母(WaiverAdult)和孩子(WaiverMinor)。 我想返回查詢集中的父項和子項,因此我可以將它們分組到一個格式化的模板中,如下所示:
John Dad
Tommy Son
Amber Daughter
Jen Jones
Stevie Jones
Mike Jones
楷模:
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)
看法:
class WaiverListView(ListView):
waiver_adults = WaiverAdult.objects.all().prefetch_related(
'waiverminor_set').order_by('created')
queryset = [adult.waiverminor_set.all() for adult in waiver_adults]
context_object_name = "waiver_list"
template_name = 'waiver/waiver_list.html'
模板示例概述我正在嘗試的內容:
{% for adult in waiver_list %}
<tr>
<td>{{adult.last_name}}, {{adult.first_name}}</td>
</tr>
{% for child in waiver_list %}
<tr>
<td>{{child.last_name}}, {{child.first_name}}</td>
</tr>
{% endfor %}
{% endfor %}
編寫此查詢的正確方法是什么? 先感謝您。 我真的很感激指導。
如果您希望訪問相關對象,最好的方法是預取它們,這樣您就不會在每次要訪問相關對象時再次訪問數據庫。 你可以這樣做:
waiver_adults = WaiverAdult.objects.all().prefetch_related('waiverminor_set').order_by('created')
這將是您的視圖的查詢集,因此您可以在視圖中編寫:
queryset = waiver_adults
然后在模板中,您可以通過以下方式以您想要的方式循環:
{% for adult in waiver_list %}
<tr>
<td>{{adult.last_name}}, {{adult.first_name}}</td>
</tr>
{% for child in adult.waiverminor_set.all %}
<tr>
<td>{{child.last_name}}, {{child.first_name}}</td>
</tr>
{% endfor %}
{% endfor %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.