这个关于 MPTT 对象和 {% recursetree %} 模板标签的使用的问题与这个有关。
我的 Django 模型:
from mptt.models import MPTTModel, TreeForeignKey
class myModel(MPTTModel):
myIntA = models.IntegerField(default=0)
myParent = TreeForeignKey('self', null=True, blank=True, related_name='children')
我的观点:
myModelList = myModel.objects.all()
for i in range(len(myModelList)):
myModelList[i].myIntB = i
return render(
request,
'myApp/myTemplate.html',
Context(
{
"myModels": myModelList,
}
)
)
以上合法吗?您可以看到我为每个 myModel 对象添加了一个变量 myIntB。但是,当我尝试在下面的模板中打印 myIntB 时,什么也没有出现。
如何从模板访问 myIntB?这不是我为此模型定义的字段,我也不希望它是。我只希望 myModel 在渲染这个特定模板的过程中增加这个额外的变量。问题是我无论如何都看不到使用递归树模板标签这样做。
我的模板:
{% load mptt_tags %}
<ul>
{% recursetree nodes %}
<li>
{{node.id}} {{node.myIntA} {{node.myIntB}}
{% if not node.is_leaf_node %}
<ul>
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>