在 django 中使用 slugify 后的详细信息页面错误

问题描述

我在点击任何商品详细信息页面时收到此错误 必须使用 URLconf 中的对象 pk 或 slug 调用通用详细信息视图。

网址:

path('item/<slug:item_slug>/',ItemDetailView.as_view(),name='item_detail'),

查看:

class ItemDetailView(DetailView):
    model = Item
    slug_field = 'item_slug'

型号:

class Item(models.Model):
    title = models.CharField(max_length=100)
    description= RichTextField(blank=True,null=True)
    main_image= models.ImageField(null=True,blank=True,upload_to='images/')
    date = models.DateTimeField(auto_Now_add=True)
    item_category = models.ForeignKey(Categories,default='Coding',on_delete=SET_DEFAULT)
    slug = models.SlugField(unique=True,null=True) # new

    

    def save(self,*args,**kwargs):
        if not self.slug and self.title:
            self.slug = slugify(self.title)
        super(Item,self).save(*args,**kwargs)

    def __str__(self):
        return self.title

解决方法

URL 参数用 slug_url_kwarg [Django-doc] 指定,而不是 syscallslug_field [Django-doc] 用于过滤查询集,因为您将 slug_field 用于您的模型,因此您无需更改它。

所以视图应该是这样的:

slug