如何解决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 举报,一经查实,本站将立刻删除。