[Python] 'ReverseManyToOneDescriptor' object has no attribute 'all'

Discussão em 'Python' iniciado por Stack, Março 13, 2025.

  1. Stack

    Stack Membro Participativo

    I'm new to Django and I'm trying to access products that belong to category through Category model. I'm using a foreign key in Product for categories. These are my models:

    class Category(models.Model):
    name = models.CharField(max_length=140)
    slug = models.SlugField(blank=True)

    def __str__(self):
    return self.name

    def get_absolute_url(self):
    return reverse("shop:category", kwargs=
    {"category_slug": self.slug})

    class Product(models.Model):
    category = models.ForeignKey(Category,
    on_delete=models.CASCADE)
    brand = models.ForeignKey(Brand,
    on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    slug = models.SlugField()
    description = models.TextField()
    image = models.ImageField(upload_to=image_name)
    price = models.PositiveIntegerField()
    avaliable = models.BooleanField(default=True)

    def get_absolute_url(self):
    return reverse("shop:product", kwargs={
    "product_slug": self.slug,
    "product_ctgr_slug":
    self.category.slug,})


    My Views:

    class CategoryDetailView(DetailView):
    model = Category
    category_products = Category.product_set.all()
    slug_url_kwarg = "category_slug"

    def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['categories'] = self.categories
    context['category_products'] = self.category_products
    return context


    But Django gives me an AttributeError: 'ReverseManyToOneDescriptor' object has no attribute 'all'.
    What am I doing wrong?

    Continue reading...

Compartilhe esta Página