Есть ли другой способ передачи параметров поиска в django

Я пытаюсь передать параметр поиска в мой views.py для рендеринга в шаблоны

model.py

class Category(models.Model):
    name = models.CharField(max_length=20)
    slug = models.SlugField(max_length=200, blank=True, unique=True)

class Post(models.Model):

    """"
    created_on = models.DateTimeField(auto_now_add=True)
    cover = models.ImageField(null=True, blank=True )
    categories = models.ManyToManyField(Category, related_name='posts', blank=True)

views.py

def index_category(request, category):
    posts = Post.objects.filter(categories__name__contains=category).order_by('-created_on')
    context = {
        "category": category,
        "posts": posts,
    }
    return render(request, "blog/index_category.html", context)

index_category.html

{% extends "base.html" %}
{% block content %}
<div class="col-md-8 offset-md-2">
    <h1>{% block title %}{{ category | title }}{% endblock title %}</h1>
    <hr>
    {% for post in posts %}
        <h2><a href="{% url 'index-detail' post.slug %}">{{ post.title }}</a></h2>
        <small>
            {{ post.created_on.date }} |&nbsp;
            Categories:&nbsp;
            {% for category in post.categories.all %}
            <a href="{% url 'blog-category' category.name %}">
                {{ category.name }}
            </a>&nbsp;
            {% endfor %}
        </small>
        <p>{{ post.body | slice:":200" }}...</p>
    {% endfor %}
</div>
{% endblock %}

Когда я обновляю localhost на странице категории, он не возвращает ничего, кроме заголовка блока.

Есть ли другой способ фильтровать отношения "многие ко многим" между постом и категорией?

Во избежание будущих проблем с похожими category именами измените следующим образом:

posts = Post.objects.filter(categories__name__contains=category).order_by('-created_on')

вызов отношения: (для которого у вас есть related_name='posts' в поле Post.category)

posts = category.posts.all().order_by('-created_on')

Для получения дополнительной помощи покажите urls.py.

Как передать переменную category в функцию index_category?

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