Сохранение истории поиска в проекте 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'. Не уверен, почему это не работает, если у вас есть идеи, пожалуйста, поделитесь. Большое спасибо!

Вернуться на верх