Как добавить опцию фильтрации по категориям с помощью фильтра Django

Привет, я пытаюсь добавить опцию фильтрации по категориям на django с помощью Django filter. Но когда я пытаюсь добавить фильтр, я получаю ошибку, говорящую, что

Field 'id' expected a number but got 'blogs'.

Может ли кто-нибудь помочь мне создать фильтр по категориям.

Это модель моего блога

class blog(models.Model):
    title = models.CharField(max_length=100, null=True, blank=True)
    slug = models.SlugField(max_length=200, unique=True, auto_created=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    created_on = models.DateTimeField(auto_now_add=True)
    tags = TaggableManager(blank=True)
    category = models.ForeignKey('Categorie', null=True, blank=True, on_delete=models.CASCADE)

Это моя модель категории

class Categorie(models.Model):
    name = models.CharField(max_length=100, null=True, blank=True)
    slug = models.SlugField(max_length=250, unique=True, auto_created=True)

Это мой файл filters.py

blog_choice = (
    ('new','new'),
    ('latest','latest'),
    ('technology','technology'),
    ('sports','sports'),
)

category = django_filters.MultipleChoiceFilter(label='Category', choices=blog_choice,  widget=CheckboxSelectMultiple(attrs={'class': 'mr-2 h-[15px] w-5 border-gray-300 inline mb-4 '}))

Я пытался создать функцию фильтрации, но получил ошибку

Field 'id' expected a number but got 'new'.

Вы фильтруете по slug или name категории, поэтому вы должны фильтровать по category__slug или category__name:

category = django_filters.MultipleChoiceFilter(
    label='Category',
    choices=blog_choice,
    widget=CheckboxSelectMultiple(
        attrs={'class': 'mr-2 h-[15px] w-5 border-gray-300 inline mb-4 '}
    ),
    field_name='category__slug',
)
Вернуться на верх