如何创建查询以列出 Django 中的类别
how to create query to list categories in django
我在我的 view.py 中得到了这个并且想要列出所有类别
def home(request):
category = Category.objects.all()
context = {
'category': category,
}
return render(request, 'courses/index.html', context)
model.py
class Category(models.Model):
title = models.CharField(max_length=30, null=True)
slug = models.SlugField(max_length=30, unique=True)
class Course(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
name = models.CharField(max_length=30)
slug = models.SlugField(max_length=30, unique=True)
但我从打印中得到了这个输出:
<QuerySet [<Category: Courses>, <Category: Computers>]>
谁能帮我解决这个问题
category
不是 一个类别。但是类别的集合,你需要迭代,比如:
def home(request):
categories = Category.objects.all()
context = {
'categories': categories,
}
return render(request, 'courses/index.html', context)
在您迭代的模板中,可以使用以下方式呈现它:
{% for <b>category in categories</b> %}
{{ category }}
{% endfor %}
编辑:您可以使用 相关 Course
个对象的数量来注释您的查询集:
from django.db.models import <b>Count</b>
def home(request):
categories = Category.objects.annotate(
<b>num_courses=Count('course')</b>
)
context = {
'categories': categories,
}
return render(request, 'courses/index.html', context)
然后你可以渲染它:
{% for <b>category in categories</b> %}
{{ category }}: {{ category.num_courses }}
{% endfor %}
我在我的 view.py 中得到了这个并且想要列出所有类别
def home(request):
category = Category.objects.all()
context = {
'category': category,
}
return render(request, 'courses/index.html', context)
model.py
class Category(models.Model):
title = models.CharField(max_length=30, null=True)
slug = models.SlugField(max_length=30, unique=True)
class Course(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
name = models.CharField(max_length=30)
slug = models.SlugField(max_length=30, unique=True)
但我从打印中得到了这个输出:
<QuerySet [<Category: Courses>, <Category: Computers>]>
谁能帮我解决这个问题
category
不是 一个类别。但是类别的集合,你需要迭代,比如:
def home(request):
categories = Category.objects.all()
context = {
'categories': categories,
}
return render(request, 'courses/index.html', context)
在您迭代的模板中,可以使用以下方式呈现它:
{% for <b>category in categories</b> %}
{{ category }}
{% endfor %}
编辑:您可以使用 相关 Course
个对象的数量来注释您的查询集:
from django.db.models import <b>Count</b>
def home(request):
categories = Category.objects.annotate(
<b>num_courses=Count('course')</b>
)
context = {
'categories': categories,
}
return render(request, 'courses/index.html', context)
然后你可以渲染它:
{% for <b>category in categories</b> %}
{{ category }}: {{ category.num_courses }}
{% endfor %}