我有一个简单的(相对)模型,例如:
models.py
class Author( models.Model ):
first_name = model.CharField( max_length=30 );
last_name = model.CharField( max_length=30 );
something = model.FloatField( );
class Book( models.Model ):
name = model.CharField( max_length=200 );
authors = model.ManyToManyField( Author );
模板/ book.html
{% for book in books %}
{{ book.name }}
<div id="authors">
{% for author in book.authors.all %}
{{ author|template:"author_short.html" }} *** unsure here
{% endfor %}
</div>
{% endfor %}
author_short.html(例如......)
<div style="border: 1px solid #f00;">
Name: {{ first_name }} {{ last_name }}
</div>
我希望能够做的是格式化作者&#39;基于某些模板的内循环中的信息。看起来我应该能够做那种事情。
最后,我想要做的是能够使用ajax调用添加作者(使用相同的格式!)。我知道我可以通过ajax添加,但我必须在两个地方进行格式化定义,因此不是DRY(除非我错过了另一种方法,这很可能)。
答案 0 :(得分:1)
您可以使用include
templatetag for this。
加载模板并使用当前上下文呈现它。这是一种在模板中“包含”其他模板的方式
{% for author in book.authors.all %}
{% include "author_short.html" %}
{% endfor %}
和author_short.html
仍可以是:
<div style="border: 1px solid #f00;">
Name: {{ first_name }} {{ last_name }}
</div>
可以重复使用