博客类别 Slugify 在 Django 中不起作用

问题描述

当我点击帖子类别时出现错误,它显示字段“id”需要一个数字但得到“编码”。

每个帖子都添加在下面的类别下是我的代码

型号:

class Categories(models.Model):
    name = models.CharField(max_length=200)
    

    class Meta:
        verbose_name_plural = 'Categories'

    def __str__(self):
        

        return self.name

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(null=False,unique=True) # new

查看:

def CategoryView(request,cats):
    category_posts = Item.objects.filter(item_category=cats.replace('-',''))
    return render(request,'waqart/categories.html',{'cats':cats.title(),'category_posts':category_posts })

网址:

urlpatterns = [
    path('',ItemListView.as_view(),name='waqart-home'),path('add_item/',ItemCreateView.as_view(),name='create_item'),path('item/<int:pk>/',ItemDetailView.as_view(),name='item_detail'),path('item/edit/<int:pk>/',ItemUpdateView.as_view(),name='item_update'),path('category/<str:cats>/',CategoryView,name='category'),

我是 django 的新手,如果有人能帮我解决这个问题不胜感激

解决方法

您需要过滤 item_category名称,因此:

def CategoryView(request,cats):
    category_posts = Item.objects.filter(
        item_category__name=cats.replace('-','')
    )
    return render(request,'waqart/categories.html',{'cats':cats.title(),'category_posts':category_posts })