我如何过滤django中的数据?

问题描述 投票:0回答:1

我在我的视图中使用了分页,并且可以使用subject_name关键字搜索数据,但现在我想根据其主题持续时间以下拉格式搜索它们。

view.py

@login_required
def servicesview(request):
    services = ServicesData.objects.all()
    key = request.GET.get("search_key", "")
    if key:
        services = 
        ServicesData.objects.filter(subject_name__icontains=key)
    page = request.GET.get('page', 1)
    paginator = Paginator(services, 2)
    try:
    services = paginator.page(page)
    except PageNotAnInteger:
    services = paginator.page(1)
    except EmptyPage:
    services = paginator.page(paginator.num_pages)
    return render(request, 'services.html', {'services': services, 'key': key})

services.html

<form>
<input type="text" name="search_key" value="{{key}}" placeholder="Search..">
<input type="submit" value="Submit">
</form>

我的页面如下所示:Reality

但是我想要以下类似的subject_duration:

What i want

请有人帮助

django django-templates django-filter
1个回答
0
投票

尝试一下。

q_objects将收集所有过滤器数据并传递给queryset。

     from django.db.models import Q

        def servicesview(request):
            key = request.GET.get("search_key", "")
            title = request.GET.get("title", "")
            priority = request.GET.get("priority", "")
            q_objects = Q()
            if key:
                q_objects.add(Q(subject_name__icontains=key), Q.AND)
            if title:
                q_objects.add(Q(title__icontains=title), Q.AND)
            if status:
                q_objects.add(Q(status=status), Q.AND)
            if priority:
                q_objects.add(Q(priority=priority), Q.AND)
            if q_objects:
                services = ServicesData.objects.filter(q_objects)
            else:
                services = ServicesData.objects.all()
            page = request.GET.get('page', 1)
            paginator = Paginator(services, 2)
            try:
                services = paginator.page(page)
            except PageNotAnInteger:
                services = paginator.page(1)
            except EmptyPage:
            services = paginator.page(paginator.num_pages)
            return render(request, 'services.html',
                          {'services': services, 'key': key})
© www.soinside.com 2019 - 2024. All rights reserved.