Проблема с обновлением значения в 1 столбце в базе данных Django
У меня есть модель поиска, которая сохраняет все поисковые запросы, которые вводят пользователи. Все хорошо, кроме обновления столбца total_searches, который я хочу обновить, если пользователь введет точно такой же запрос. Например, если 3 пользователя введут python в строку поиска, я хочу увеличить значение в столбце total_searches. Если текст будет отличаться, то создайте новую "строку" в моей таблице.
Прямо сейчас, Django вставляет новую строку каждый раз, когда я ищу что-то, и он просто помещает 1 в total_searches.
Как я могу это исправить?
models.py
class SearchQueryTracker(models.Model):
id = models.AutoField(primary_key=True)
author = models.ForeignKey(User, blank=True, null=True, on_delete=models.DO_NOTHING, unique=False) #settings INSTALLED_APPS
total_results = models.IntegerField('Search results', default=0)
total_searches = models.IntegerField('User searches', default=0)
search_term = models.CharField(max_length=1000, blank=True, null=True)
searched_on = models.DateTimeField('searched on', default=timezone.now)
views.py
@login_required
def SearchViewFBV(request):
query = request.GET.get('q')
query_list = request.GET.get('q', None).split()
user = User.objects.get(email=request.user.email)
find_duplicate_results = SearchQueryTracker.objects.filter(search_term=query).update(total_searches=F('total_searches') + 1)
search_tracker = SearchQueryTracker()
articles = Article.objects.filter(status=1).order_by('-publish')
questions = QA.objects.filter(status=1).order_by('-publish')
# combine querysets
queryset_chain = chain(
articles,
questions,
)
qs = sorted(queryset_chain,
key=lambda instance: instance.pk,
reverse=True)
count = len(qs)
search_tracker.total_results = count
search_tracker.total_searches = find_duplicate_results
search_tracker.author = user
search_tracker.search_term = query
search_tracker.save()
context = {
'query': query,
'count': count,
'query_list': qs,
}
return render(request, 'search/search_items.html', context)