【发布时间】:2021-01-05 15:37:10
【问题描述】:
我有一个看起来像这样的模型
class Invoice(models.Model):
inv_number = models.CharField(max_length=10, primary_key=True)
customer = models.ForeignKey(Customer, on_delete=models.PROTECT)
inv_date = models.DateField()
class Txn(models.Model):
invoice = models.ForeignKey(Invoice, on_delete=models.PROTECT)
transaction_date = models.DateField()
reference = models.CharField(max_length=12)
amt = models.IntegerField()
我想在我的模板中显示一份报告,其中列出了过滤后的发票,每个发票都有一个过滤交易的子列表。
在我看来,我做了以下事情:
invoice_list = Invoice.objects.filter(customer=customer)
我传入我的模板。在模板中,我执行以下操作:
{% for invoice in invoice_list %}
{{ invoice.inv_number }}, {{ invoice.customer}}, {{ invoice.inv_date }}
{% for txn in invoice.txn_set.all %}
{{ txn.transaction_date }}, {{ txn.reference }}, {{ txn.amt }}
{% endfor %}
{% endfor %}
这非常适合显示每个已过滤发票的整个交易列表。问题是,如何过滤模板中每张发票的交易列表 - 如果我只想要某个日期范围内的交易或与特定参考匹配的交易怎么办?有没有办法在将主查询集放入上下文之前将过滤器传递给视图中每个发票的 txn_set 查询集,而不将它们转换为列表?
感谢您的回复!
【问题讨论】:
标签: python django django-views django-templates django-queryset