Я пытаюсь реализовать простую функцию поиска в ListView моего CBV ниже, как выглядит мой ListView
class Postlist(SelectRelatedMixin, ListView):
model = Post
select_related = ('user', 'group')
Я хотел бы добиться чего-то подобного (Источник: Видео на YouTube о том, как добавить поиск
def post_list(request):
posts = Post.objects.all()
query = request.GET.get('q')
if query:
posts = Post.objects.filter(
Q(title__icontains=query)|
Q(user__username=query)|
Q(body__icontains=query)
)
context = {
'posts': posts,
}
return render(request, 'blog/post_list.html', context)
но я думаю, что не могу объяснить SelectRelatedMixin. Я в порядке с использованием любого. FBV или CBV, пока у меня работает поиск
Я попробовал код ниже. Я получаю NameError: имя «запрос» не определено
class Postlist(SelectRelatedMixin, ListView):
model = Post
posts = Post.objects.filter(
Q(title__icontains=query) |
Q(user__username=query) |
Q(body__icontains=query)
).select_related('user', 'group')
posts = Post.objects.filter(...)
предназначен для представления на основе функций. Если вы используете представление на основе классов, переопределитеget_queryset
, как в моем ответе. 09.04.2018