Използвам Django 1.6.1 с django-taggit.
Опитвам се да разширя търсачката си, така че да търси ключови думи в други полета освен полетата за тагове. Проблемът е, че когато итерирам през етикетите за icontains търсене в името на модела, наборът от заявки изглежда престава да бъде набор от заявки, губейки метода си за отчитане и отделният метод не работи.
views.py:
def index(request):
numresources = Resource.objects.count()
if request.method == 'POST':
form = SearchForm(request.POST)
if form.is_valid():
query = form.cleaned_data['query']
tags = parse_tags(query.lower())
# resourcelist = []
# for tag in tags:
# resourcelist.extend(Resource.objects.filter(name__icontains=tag).filter(isActive=True).order_by('-score').distinct())
# resourcelist.extend(Resource.objects.filter(tags__name__in=tags).filter(isActive=True).order_by('-score').distinct())
# numresults = len(resourcelist)
resourcelist = Resource.objects.filter(tags__name__in=tags).filter(isActive=True).order_by('-score').distinct()
querymade = True
numresults = resourcelist.count()
else:
resourcelist = Resource.objects.filter(isActive=True).order_by('-created')[:100]
else:
resourcelist = Resource.objects.filter(isActive=True).order_by('-created')[:100]
form = SearchForm()
return render(request, 'index.html', locals())
Изглежда тромаво да трябва да добавите ключовата дума „django“ към запис, който има „django“ в заглавието или URL адреса. Искам да имам не само резултатите, чиито тагове съответстват на ключовите думи, въведени от потребителя, но искам да търся в други полета за въведените ключови думи, да комбинирам тези набори от заявки и да оставя всеки резултат, добавен два пъти или повече.
И така, как и кога в този процес да сортирам по резултат и след това да премахна дубликати?