поиск Django taggit
библиотека taggit
def index(request):
query = request.GET.get('q')
if query:
query = request.GET.get('q') #.split(" ") работает с tags__name__in=query
posts = Bb.objects.filter(
если request "гонки, рпг" tags__name__in=query вернет посты с тегами: 'гонки, рпг', 'гонки', 'рпг', а это не строгий поиск.
#tags__name__in=query
если request "гонки, рпг" tags__name__iexact=request.GET.get('q') ничего не вернет! НО посты с одним тегом: 'гонки' или 'рпг' находит
tags__name__iexact=request.GET.get('q')
).distinct()
в джангоадмин поиск по меткам/taggit работает, т.е если искать посты с тегами 'гонки, рпг' вернет только те посты в которых есть эти теги :<
else:
posts = Bb.objects.all()
paginator = Paginator(posts, 1)
page_number = request.GET.get('page')
posts = paginator.get_page(page_number)
# query удалить
return render(request, 'main/home.html', {'query': query, 'posts': posts})
Нужно что-то вроде :
select p.* from Post p where exists ( select * from PostTags pt
join Tag t on pt.tag_id = t.tag_id
where pt.post_id = p.post_id
and t.name in query