Сохранение истории поиска в проекте django?
Я работаю над проектом Django, и я создал опцию поиска. Теперь меня интересует, могу ли я сохранять то, что ищут пользователи, и использовать это для создания нового контента. Также я хотел бы видеть это на стороне администратора.
Во-первых, это моя текущая установка, у меня есть представления, формы и html-части.
views.py
def search(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
search_vector = SearchVector('title', weight='A') + SearchVector('body', weight='B')
search_query = SearchQuery(query)
results = Lesson.published.annotate(search=search_vector,rank=SearchRank(search_vector, search_query)).filter(rank__gte=0.3).order_by('-rank')
context = {'page_title':page_title, 'form': form, 'query': query, 'results': results}
return render(request, 'pages/search.html', context)
forms.py
class SearchForm(forms.Form):
query = forms.CharField()
Для того чтобы сохранить, я попытался сделать следующее. Я создал модели и обновил представления, но это не сработало, как я надеялся.
models.py
class MySearchQuery(models.Model):
query = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.query
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
обновленный views.py
def search(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
search_vector = SearchVector('title', weight='A') + SearchVector('body', weight='B')
search_query = SearchQuery(query)
search_query.save()
results = Lesson.published.annotate(search=search_vector,rank=SearchRank(search_vector, search_query)).filter(rank__gte=0.3).order_by('-rank')
context = {'page_title':page_title, 'form': form, 'query': query, 'results': results}
return render(request, 'pages/search.html', context)
Я получил ошибку 'SearchQuery' object has no attribute 'save'
. Не уверен, почему это не работает, если у вас есть идеи, пожалуйста, поделитесь. Большое спасибо!