Как искать строку в дочерних категориях родителей? - PullRequest
0 голосов
/ 18 января 2019

Я хочу искать 'query' в каждом потомке и выводить результаты в list.html. Я не мог найти решение, поэтому я решил спросить здесь. Вот мой код:

def search_query_string(request, path=None, instance=None):
query = request.GET.get('query', False)
category = request.GET.get('category', False)
if category:
    cat = get_object_or_404(Category, name=category)
    children = cat.get_descendants(include_self=False)
ads = None
if query:
    if category:
        ads = Ad.objects.filter(Q(name__icontains=query) ) # I want to search query in children here
        return render_to_response('ads/list.html', locals(), context_instance=RequestContext(request))
    ads = Ad.objects.filter(Q(name__icontains=query))
return render_to_response('ads/list.html', locals(), context_instance=RequestContext(request))

Как видите, у меня уже есть список дочерних категорий, но я все еще не знаю, как их искать. Пожалуйста, помогите: (

EDIT

Так что я наконец понял, как это сделать. Вот оно:

def search_query_string(request, path=None, instance=None):
    query = request.GET.get('query', False)
    category = request.GET.get('category', False)
    query_list = []
    if category:
        parent = get_object_or_404(Category, name=category)
        children = parent.get_descendants(include_self=False)
        for c in children:
            query_list.append(c.name)
        print(query_list)
    ads = None
    if query:
        if category:
            ads = Ad.objects.filter(Q(name__icontains=query) & Q(category__name__in=query_list))
            return render_to_response('ads/list.html', locals(), context_instance=RequestContext(request))
        ads = Ad.objects.filter(Q(name__icontains=query))
    return render_to_response('ads/list.html', locals(), context_instance=RequestContext(request))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...