在django中使用slugify后出现详细页面错误

rslzwgfq  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(338)

当我单击任何项目详细信息页面时,我收到此错误。必须在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, blank=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
hgc7kmma

hgc7kmma1#

url参数是用 slug_url_kwarg [django doc],而不是 slug_field . 这个 slug_field [django doc]用于过滤查询集,因为您使用 slug 对于您的模型,您不需要更改它。
因此,视图应该如下所示:

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

相关问题