簡體   English   中英

Django模板中的外鍵關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM