2017-10-18 216 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