示例:我有一个Invoice作为父模型,发票详细信息作为子模型。我想在发票模型管理员中显示子项详细信息作为发票的条目。目标是在列表页面本身中实现统一视图。有没有其他方法可以实现这个目标:它应该是这样的:
Invoice 1:
-details 1
-details 2
Invoice 2:
-details 1
-details 2
-details 3
django 1.6.5中是否有一些可用的模板?
答案 0 :(得分:3)
假设以下示例:
models.py
class Invoice(models.model):
date = models.DateTimeField() # for example
class InvoiceDetail(models.model):
invoice = models.ForeignKey(Invoice)
views.py
# example, don't fetch all in production
return render(request, 'mytemplate.html', {'invoices': Invoice.objects.all()})
然后你的模板如下:
mytemplate.html
{% for invoice in invoices %}
<p>Invoice {{ invoice.id }} ({{ invoice.date }})
{% if invoice.invoicedetail_set %}
<ul>
{% for detail in invoice.invoicedetail_set %}
<li>Detail {{ detail.id }}</li>
{% endfor %}
</ul>
{% endif %}
</p>
{% endfor %}
对于管理界面,Django documentation: Tutorial: Adding related objects中有一个非常好的教程。