[英]Foreign key relation in Django template
我知道這個問題已經被問過很多次了,但我仍然無法解決。
model.py
class Awb (models.Model):
awb_id = models.CharField(primary_key=True, max_length=50)
awb_shipment_date = models.DateTimeField()
awb_shipper = models.CharField(max_length=250)
awb_sender_contact = models.CharField(max_length= 50)
class History (models.Model):
history_id = models.AutoField(primary_key=True)
awb = models.ForeignKey(Awb)
history_city_hub = models.CharField(max_length=250)
history_name_receiver = models.CharField(max_length=250)
view.py
def awb_list_view(request):
data = {}
data['awb'] = Awb.objects.all()
data['history'] = History.objects.all()
return render(request, 'portal/awb-list.html', data)
模板
{% for s in awb.history_set.all %}
{{ s.awb_id }}
{{ s.history_id }}
{% endfor %}
當我用此代碼嘗試時,模板中沒有結果。 我想在模板中顯示awb_id和history_id。 你可以幫幫我嗎?
首先讓我們看一下視圖代碼...
def awb_list_view(request):
data = {}
data['awb'] = Awb.objects.all()
data['history'] = History.objects.all()
return render(request, 'portal/awb-list.html', data)
傳遞給模板的上下文字典包含帶有鍵“ awb”的項以及相應的QuerySet Awb.objects.all()
。
現在讓我們看一下循環模板...
{% for s in awb.history_set.all %}
循環模板標記的此開口正試圖產生一組反向的History對象。 為了實現這一點,我們將需要一個AWB對象實例。 相反,“ awb”變量是一個QuerySet,已作為上下文傳遞給模板。
如果此代碼的目的是顯示所有AWB對象及其相關的History對象,則以下模板代碼應有效。
{% for awb_obj in awb %}
{% for history_obj in awb_obj.history_set.all %}
{{ awb_obj.id }}
{{ history_obj.id }}
{% endfor %}
{% endfor %}
Awb.history_set.all僅適用於一個Awb對象,不適用於查詢集。
這將工作:
data['awb'] = Awb.objects.first() # If the first one has history
要么:
循環瀏覽模板中的所有Awb對象,以訪問每個對象的history_set。
{% for a in awb %}
awb: {{ a.awb_id }}<br>
{% for h in a.history_set.all %}
history: {{ h.history_id }}<br>
{% endfor %}
{% endfor %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.