Django проект для отображения списка категорий в виде списка, тогда url категории отображает все посты в этой категории

Я работаю над проектом Django, в котором я хотел бы отобразить список всех категорий на главной странице в виде ссылок. Когда человек нажимает на категорию, он попадает на страницу, где отображаются все посты, относящиеся к этой категории. Внутри страницы со списком постов я хотел бы отобразить заголовок как название категории. Также я хотел бы, чтобы url содержал название категории. Мой код работает нормально при отображении этих страниц, но проблема в том, что он использует id вместо поля slug. Когда я заменяю .id на .slug, я получаю ошибку:

ValueError at /category/electricals Поле 'id' ожидало число, но получило 'electrics'

.

Вот мой Models.py:

class Category(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(null=True, blank=False)
    slug = models.SlugField(unique=True, null=True)

    def __str__(self):
        return self.title 

class Service(models.Model):
    category = models.ForeignKey('Category', on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    image = models.ImageField(null=True, blank=False)
    description = models.TextField(null=False, blank=False)
    service_id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True, editable=False)
    slug = models.SlugField(unique=True, null=True)

    def __str__(self):
        return self.title

А вот мой views.py;

def landing_page(request):
    categorys = Category.objects.all()
    context = {'categorys':categorys} 
    return render(request, 'users/homepage.html', context)

def categories(request, cats):
    category_services = Service.objects.filter(category=cats)
    context = {'cats':cats,'category_services':category_services }
    return render(request, 'users/categories.html', context)

Мой urls.py:

path('category/<str:cats>', views.categories, name='category'),

Шаблон:

{% for category in categorys %}
    <!-- <li><a href="{% url 'category' category.slug %}" >{{category.title}}</a></li> -->
    <li><a href="{% url 'category' category.id %}" >{{category.title}}</a></li>
 {% endfor %}

Я пробовал заменить, используя код ниже, но он не работает


category_services = Service.objects.filter(category=cats.replace('id', 'slug')))


Вернуться на верх