Как я могу фильтровать теги с помощью django-taggit
Я делаю следующее, чтобы фильтровать посты по тегам. Но проблема в том, что при нажатии на кнопку тега я не вижу никаких результатов.
urls.py :
urlpatterns =[
......
path('challengePage/', views.ChallengePage, name ='challengePage'),
path('tag/<tag>', views.tag, name='tag_argument'),
]
the views.py :
def ChallengePage(request):
challenges = Challenge_code.objects.prefetch_related('tags').all().order_by('-created_at')
tags = Tag.objects.all()
context = {
'challenges' : challenges,
'tags':tags,
}
return render(request,'challengePage.html',context)
def tag(request,tag):
challenges_tag = Challenge_code.objects.filter(tags__name__in=tag)
return render(request, 'tag.html',{'tag':tag, 'challenges':challenges_tag})
challengePage.html :
<div style="text-align: center;">
{% for tag in tags %}
<a href="{% url 'tag_argument' tag %}"><button style="text-align: center;" dir="ltr" class="buttonTag buttonTag2"
> {{tag.name}}</button></a>
{% endfor %}
</div>
тег.html :
<div class="code_body">
<div class="container_code">
{% for challenge in challenges_tag %}
<div class="Box_code">
<p class="title_code"><bdi style=" color: #000;">
{{challenge.title}}
<br>
{% for tag in challenge.tags.all %}
<small>{{tag}}, </small>
{% endfor %}
</bdi>
</p>
<a href="{% url 'challenge' challenge.id %}"><button class="button1" style="vertical-align:middle"><span>Join</span></button></a>
<p class="name-user">
<bdi>
By:
{{challenge.auther.username}}
</bdi>
</p>
</div>
{% endfor %}
я использую его в своем текущем проекте i urls.py use
tag/<slug:tag_slug>
в файле views.py
tag = get_object_or_404(Tag, slug=tag_slug)
query = your_model.filter(tags__in=[tag])
не забудьте импортировать это в ваш views.py
from taggit.models import Tag
это работает очень хорошо со мной измените это, чтобы быть подходящим для вашей цели и я готов помочь, но сначала следуйте этому