2017-10-18 115 views
0

我有以下型號在Django:Django的查詢不選擇related_name

class UserPayments(models.Model): 

    _DATABASE = "payments" 

    id = models.AutoField(primary_key=True) 
    paym_psp_id = models.ForeignKey(ConfigPSP, null=True, on_delete=models.SET_NULL) 
    [...] 

class InvoiceNumbers(models.Model): 
    _DATABASE = "payments" 

    id = models.AutoField(primary_key=True) 
    inv_date = models.DateField(null=False) 
    inv_payment_id = models.ForeignKey(UserPayments, null=True, on_delete=models.DO_NOTHING, related_name='paym_invoice_meta') 
    [...] 

正如你可以看到他們與在InvoiceNumbers模式「related_name」的定義有關。

當我沒有做像Django的查詢:在模板

{% for inv in payments %} 
     {% for meta in inv.paym_invoice_meta %} 
      {{ meta.inv_invoice_hash }} 
     {% endfor %} 
{% endfor %} 

payments = UserPayments.objects.filter(paym_user_id=user_id) 

並遍歷此查詢我得到的模板錯誤pay_invoice_meta不迭代。通過包含左外連接的手動選擇語句,我可以獲得所有結果。

我在這裏錯過了什麼?如何強制查詢從InvoiceNumbers中選擇值?

+0

更換 {%爲inv.paym_invoice_meta.all%間} –

回答

0

調用相關對象的all方法返回一個QuerySet:

{% for inv in payments %} 
    {% for meta in inv.paym_invoice_meta.all %} 
     {{ meta.inv_invoice_hash }} 
    {% endfor %} 
{% endfor %} 
+0

就是這樣。非常感謝! 失去了大量的搜索時間 - 應該問ealier ... – FreddyFFM