У меня проблемы с классом с именем SearchView (ListView), который я использую для отображения поискового запроса. Этот класс "SearchView" наследуется от представления UserProfile, так что пользователи могут использовать панель поиска в представлении профиля для поиска любого сообщения. Когда я пытаюсь загрузить маршрут / пользователей ///, возникает следующая ошибка: у объекта «UserProfile» нет атрибута «объект». Я предполагаю, что это потому, что я переопределяю метод get_context_data ().
Это код класса SearchView:
class SearchView(ListView):
model = Post
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
try:
context['list_result'] = self.result
except:
messages.error(self.request, 'test')
finally:
return context
def get(self, request, *args, **kwargs):
if request.GET.get('search'):
search_query = request.GET.get('search', None)
self.result = Post.objects.filter(title__icontains=search_query).order_by()
if not self.result:
messages.error(request, f'No results found for {search_query}')
return super().get(request, *args, **kwargs)
Это код представления UserProfile:
@method_decorator(login_required, name='dispatch')
class UserProfile(SearchView, DetailView):
model = User
context_object_name = 'user_object'
def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
try:
relevant_post = Post.objects.filter(author_id=self.kwargs.get('pk')).order_by('-rating')[0]
data['relevant_post'] = relevant_post
except IndexError:
pass
finally:
return data
Это шаблон поиска:
{% extends 'blog/base.html' %}
{% load static %}
{% block content %}
<form class="align-middle w-50" type="GET" style="margin: 0">
<span class="fa fa-search form-control-feedback"></span>
<input type="text" class="form-control" name="search"
placeholder="Search ..">
</form>
{% if list_result %}
<h2>Results: </h2>
{% for result in list_result %}
<div class="container">
<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<img class="rounded-circle article-img" src="{{ result.author.profile.image.url }} "/>
<a class="mr-2" href="{% url 'profile' result.author.id result.author.username %}">{{ result.author }}</a>
<small class="text-muted">{{ result.post_date|date:"N d, o" }} . </small>
<div class="float-right mt-1">
<img src="{% static 'blog/rating_icon.svg' %}" alt="Ratings">
<div></div>
<medium class="ml-2">{{ result.rating }}</medium>
</div>
<h2><a class="article-title" href="{% url 'post-detail' result.id result.title %}">{{ result.title }}</a></h2>
<a href="{% url 'post-detail' result.id result.title%}">
Click here for more details.
</a>
</div>
</div>
</article>
</div>
{%endfor%}
{%endif%}
{%endblock%}
Заранее спасибо.