Я использую Django 1.6.1 с django-taggit.Как объединить несколько запросов и удалить дубликаты?
Я пытаюсь расширить свою поисковую систему, чтобы она выполняла поиск ключевых слов в других полях, кроме полей тега. Проблема в том, что когда я повторяю теги для поиска значков в имени модели, набор запросов, похоже, перестает быть набором запросов, теряя метод подсчета, а отдельный метод не работает.
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())
кажется неуклюжим, чтобы добавить «Джанго» ключевое слово для записи, имеющей «Джанго» в названии или URL. Я хочу иметь не только результаты, теги которых соответствуют введенным вами ключевым словам, но я хочу искать другие поля для введенных ключевых слов, объединять эти запросы и оставлять любые добавленные два или более результата.
Так как и когда в этом процессе я сортирую по счету, а затем удаляю дубликаты?