是否可以在django模板中编写类似的内容:
{% for subcategory in category.subcategory.all %}
<li style="padding-left:20px">
<a href="/{{category.slug}}/{{subcategory.slug}}">
{{ subcategory.name }}
{{ sub_ + str(subcategory) }}
</a></li>
{% endfor %} <br>
在我的views.py中,我有:
def index(request):
context = {}
categories = Category.objects.select_related()
subcategories = SubCategory.objects.all()
context['categories'] = categories
context['subcategories'] = subcategories
for subcategory in subcategories:
sites = Site.objects.filter(subcategory=subcategory, is_active=True)
print(sites.count())
context['sub_' + str(subcategory)] = sites.count()
print(context)
return render(request, 'mainapp/index.html', context)
我需要计算每个子类别中的网站。我想我可以通过制作sub_category1,sub_category2变量来做到这一点。但我不知道如何在模板中获取它。有任何想法吗?当我写{{sub_category1}}时,它有效。我需要把
答案 0 :(得分:4)
{{ sub_ + str(subcategory) }}
不,这不会起作用。
我会在SubCategory
模型上创建一个方法:
def get_active_sites(self):
return Site.objects.filter(subcategory=self, is_active=True)
现在你可以使用
{{ subcategory.get_active_sites.count }}
在模板中。同样地,我将/{{category.slug}}/{{subcategory.slug}}
替换为使用reverse()
的SubCategory上的方法;可能名为get_absolute_url()
。