Как реализовать поиск по нескольким полям в Django?

Проблема заключается в реализации поиска по нескольким полям. Есть база данных sqllite, есть таблица и одна кнопка поиска на странице, пользователь вводит значение в поля (не обязательно заполнять все поля, оно заполняется случайным образом).

Я только начинаю изучать django, не судите строго) Спасибо!

модели

просмотров

class PostsBySubject(ListView):
    template_name = 'blog/index.html'
    context_object_name = 'posts'
    paginate_by = 50
    allow_empty = False

    def get_queryset(self):
        return Post.objects.filter(subject__pk=self.kwargs['pk'])

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        context['title'] = Subject.objects.get(pk=self.kwargs['pk'])
        return context



class PostsByYear(ListView):
    template_name = 'blog/index.html'
    context_object_name = 'posts'
    paginate_by = 50
    allow_empty = False

    def get_queryset(self):
        return Post.objects.filter(year__pk=self.kwargs['pk'])

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        context['title'] = Year.objects.get(pk=self.kwargs['pk'])
        return context




class PostsBySurveys(ListView):
    template_name = 'blog/index.html'
    context_object_name = 'posts'
    paginate_by = 50
    allow_empty = False

    def get_queryset(self):
        return Post.objects.filter(surveys__pk=self.kwargs['pk'])

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super().get_context_data(**kwargs)
        context['title'] = Surveys.objects.get(pk=self.kwargs['pk'])
        return context



class GetPost(DetailView):
    model = Post
    template_name = 'blog/single.html'
    context_object_name = 'post'

урлы

from django.urls import path
from .views import *

urlpatterns = [
    path('', Home.as_view(), name='home'),
    path('post/<int:pk>', GetPost.as_view(), name='post'),
    path('subject/<int:pk>', PostsBySubject.as_view(), name='subject'),
    path('year/<int:pk>', PostsByYear.as_view(), name='year'),
    path('surveys/<int:pk>', PostsBySurveys.as_view(), name='surveys'),
    path('division/<int:pk>', PostsByDivision.as_view(), name='division'),
    path('executor/<int:pk>', PostsByExecutor.as_view(), name='executor'),
    path('format/<int:pk>', PostsByFormat.as_view(), name='format'),
    path('search/', Search.as_view(), name='search'),
]

поиск

<form class="row g-2" action="{% url 'search'%}" method="get">
    <div class="col-auto" style="display: inline-flex; align-items: baseline;">
        <input type="text"  name="s" placeholder="An object..." class="form-control">
        <input type="text"  name="y" placeholder="date of..." class="form-control">
        <input type="text"  name="z" placeholder="Type TO..." class="form-control">
    </div>
    <div class="col-auto">
        <button type="submit" class="btn btn-primary mb-3">Search</button>
    </div>
</form>

Я пробовал различные варианты до сих пор без успеха

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