Почему URL не работает после добавления поля foreignkey в модель?

Я создаю приложение для блога и добавил категорию для его записей. При добавлении новой категории это можно сделать без проблем. Но проблема в том, что я не могу найти посты для определенного ID категории и получаю ошибку типа

Field 'id' expected a number but got 'health'

Но до того, как я обновил поле category charafield до forenkeyfied, оно работало без проблем.

Вот мой код:

class Post(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now= True)
    content = SummernoteTextField(blank=True, null=True)
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)
    image = models.ImageField(upload_to='images',null=True, blank=True)
    category = models.ForeignKey('blog.category', on_delete=models.SET_NULL, null=True, blank=True)
    
 class category(models.Model):
    name = models.CharField(max_length=80)
    def __str__(self):
        return self.name

views.py

def CategoryView(request, cats):
    category_posts = Post.objects.filter(category=cats.replace('-', ' '))
    return render(request, 'categories.html', {'cats':cats.replace('-', ' '), 'category_posts':category_posts})

forms.py

class PostForm(forms.ModelForm):
    category = forms.ModelChoiceField(queryset=category.objects.all().order_by('name'))
    class Meta:
        model = Post
        fields = ('title', 'category','author', 'content', 'image','status')

Вы не поделились полной трассировкой, но ошибка, вероятно, вызвана этой строкой

Post.objects.filter(category=cats.replace('-', ' '))

Вы фильтруете по внешнему ключу category с помощью строки, поэтому возникает ошибка.

Похоже, что вы хотели отфильтровать по названию категории:

Post.objects.filter(category__name=cats.replace('-', ' '))
Вернуться на верх