Skip to main content
 首页 » 编程设计

python之为什么 Django 返回 Django object is not iterable 错误

2024年09月03日37tuyile006

我得到了什么 this的错误?

模型.py

class Category(models.Model): 
    name = models.CharField(max_length=100) 
    description = models.TextField() 
 
    def __str__(self): 
        return self.name 
 
 
class SubCategory(models.Model): 
    name = models.CharField(max_length=100) 
    category = models.ForeignKey(Category, on_delete=models.CASCADE) 
    image_url = models.CharField(default=0, max_length=2000) 
    price = models.IntegerField(default=0) 

View .py

def category(request, pk): 
    categories = Category.objects.get(id=pk) 
    subcategories = SubCategory.objects.filter(category=categories) 
    return render(request, 'category.html', {'categories': categories, 'subcategories': subcategories}) 

网址.py

urlpatterns = [ 
    path('', views.index), 
    url(r'^category/(?P<pk>\d+)$', views.category, name='category'), 
] 

基础.html

{% for category in categories %} 
<a class="dropdown-item" href="{% url 'category' pk=category.id %}">{{ category.name }}</a> 
{% endfor %} 

请您参考如下方法:

get 返回一个模型实例,而不是一个查询集(尽管你的变量名具有误导性):

categories = Category.objects.get(id=pk)  # instance, not queryset! 

因此:

{% for category in categories %}  # instance cannot be looped over! 

产生您遇到的错误。