我想这一定很简单,但我已经尝试了好几个小时,却找不到任何帮助。
我有2个型号。一个用于模板类别,另一个用于模板
我在主页上列出了模板类别,对于每个类别,我想要显示有多少模板将该类别作为外键。
我的代码如下:
Models.py
class TemplateType(models.Model):
type_title = models.CharField(max_length=60)
type_description = models.TextField()
file_count = models.ForeignKey('TemplateFile')
def __str__(self):
return self.type_title
def get_absolute_url(self):
return "/templates/%s/" %(self.id)
class TemplateFile(models.Model):
template_type = models.ForeignKey(TemplateType, on_delete=models.DO_NOTHING)
template_file_title = models.CharField(max_length=120)
template_file_description = models.TextField()
def __str__(self):
return self.template_file_title
Views.py
from django.shortcuts import HttpResponse
from django.shortcuts import render, get_object_or_404
from django.db.models import Count
from .models import TemplateType
from .models import TemplateFile
def home(request):
queryset = TemplateType.objects.all().order_by('type_title').annotate(Count('file_count'))
context = {
"object_list": queryset,
"title": "Home",
}
return render(request, "index.html", context)
的index.html
<div class="row">
{% for obj in object_list %}
<div class="template_type col-md-6">
<a href="{{ obj.get_absolute_url }}">
<h4>{{ obj.type_title }}</h4>
</a>
<p>{{ obj.type_short_description }}</p>
<button class="btn btn-primary" type="button">Templates <span class="badge">{{ obj.file_count__count }}</span></button>
</div>
{% endfor %}
</div>
有人可以帮忙吗?
答案 0 :(得分:0)
<强> Views.py 强>
from django.shortcuts import HttpResponse
from django.shortcuts import render, get_object_or_404
from django.db.models import Count
from .models import TemplateType
from .models import TemplateFile
def home(request):
queryset = TemplateType.objects.order_by('type_title').annotate(num_file=Count('file_count'))
context = {
"object_list": queryset,
"title": "Home",
}
return render(request, "index.html", context)
现在object_list包含TemplateType对象。您可以访问num_file,如:object_list[0].num_file
。在模板中使用它。
<强>的index.html 强>
<div class="row">
{% for obj in object_list %}
<div class="template_type col-md-6">
<a href="{{ obj.get_absolute_url }}">
<h4>{{ obj.type_title }}</h4>
</a>
<p>{{ obj.type_short_description }}</p>
<button class="btn btn-primary" type="button">Templates <span class="badge">{{ obj.num_file }}</span></button>
</div>
{% endfor %}
</div>