2017-02-05 4 views
2

J'ai un problème avec le produit du spectacle dans la catégorie. (Les produits sont spectacle, mais quand je clique sur la catégorie (T-shirt) Je possède ce AttributeError problème à/homme/t-shirt/ objet 'QuerySet' n'a pas d'attribut « objetsObjet Django QuerySet n'a aucun attribut 'objets

views.py

def product_list(request, category_slug=None): 
    category = None 
    categories = Category.objects.all() 
    products = Product.objects.filter(section='man', available=True) 
    if category_slug: 
     category = get_object_or_404(Category, slug=category_slug) 
     products = products.objects.filter(category=category) 
    return render(request, 
        'shop/product/list.html', 
        {'category': category, 
        'categories': categories, 
        'products': products}) 

urls. py

urlpatterns = [ 
    url(r'^$', views.main, name='main'), 
    url(r'^man/$', views.product_list, name='product_list'), 
    url(r'^man/(?P<category_slug>[-\w]+)/$', 
     views.product_list, 
     name='product_list_by_category'), 


] 

models.py

class Category(models.Model): 
    name = models.CharField(max_length=200, 
          db_index=True) 
    slug = models.SlugField(max_length=200, 
          db_index=True) 

    class Meta: 
     ordering = ('name',) 
     verbose_name = 'category' 
     verbose_name_plural = 'categories' 

    def __str__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('shop:product_list_by_category', 
         args=[self.slug]) 

list.html

{% extends "shop/base.html" %} 
{% load static %} 

{% block title %}VPW{% endblock %} 

{% block content %} 
<ul> 
    {% for c in categories %} 
    <li> 
     <a href="{{ c.get_absolute_url }}">{{c.name}}</a> 
    </li> 
    {% endfor %} 
</ul> 

    {% for product in products %} 
    {{ product.name }} 
    {% endfor %} 
{% endblock %} 

Répondre

3

Vous devez changer

products = products.objects.filter(category=category) 

à

products = products.filter(category=category) 

En bref, vous avez déjà interrogé des données au niveau objects, l'identifiant ainsi .objects n'est plus nécessaire ou valide à ce point dans le code.

Vous pouvez trouver plus d'informations here.