поиск 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

Ответы (0 шт):