微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ForwardManyToOneDescriptor对象没有属性'slug Django using reverse

如何解决ForwardManyToOneDescriptor对象没有属性'slug Django using reverse

我想在模型中使用反向来支持URL,该URL具有三个子段。 但这给了我一个错误

我的网址是这样的: site.com/category/slug/slug/slug ...>

  • site.com/category/mobile/nokia/n95

错误

“ ForwardManyToOneDescriptor”对象没有属性“子弹”

型号:

from Django.db import models
from Django.shortcuts import reverse


class Category(models.Model):
    name = models.CharField(max_length=150)
    slug = models.SlugField(unique=True,max_length=200)
    child_category = models.ForeignKey('self',max_length=150,null=True,blank=True,on_delete=models.CASCADE)
    is_child = models.BooleanField(default=False)

    def __str__(self):
        return self.name

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


class Product(models.Model):
    category = models.ManyToManyField(to=Category,related_name='products')
    name = models.CharField(max_length=150)
    slug = models.SlugField(unique=True,max_length=200)
    description = models.TextField()

    class Meta:
        ordering = ('name','available',)
        
    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('shop:product_details',self.category.model.slug,self.category.model.child_category.slug,self.slug)

URL:

from Django.urls import path
from Shop import views

app_name = 'shop'

urlpatterns = [
    path('<slug:brands_slug>/',views.brands,name='brands'),path('<slug:brands_slug>/<slug:product_slug>/',views.products,name='products'),path('<slug:brands_slug>/<slug:product_slug>/<slug:product_details>/',views.details_products,name='product_details'),]

查看:

def details_products(request,brands_slug,product_slug,product_details):
    details = Product.objects.filter(category__child_category__slug=brands_slug,category__slug=product_slug,slug=product_details)
    context = {'details': details}
    return render(request,'shop/product_details.html',context=context)

解决方法

更改您的路径。

path('category/<slug:brands_slug>/<slug:product_slug>/<slug:product_details>/',views.details_products,name='product_details'),

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。