如何给人以形式分页

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

我想给分页到下面的视图。我怎么能放弃它,因为它具备的条件以及形式。我没有得到如何处理它。请帮我在这JobListView分页整合

class JobListView(LoginRequiredMixin, generic.TemplateView):
    template_name = 'jobs/job.html'

    def get(self, request, *args, **kwargs):
        context = super(JobListView, self).get_context_data(**kwargs)

        if 'status' in request.GET:
            form = JobSearchForm(request.GET)

            if form.is_valid():
                status = form.cleaned_data['status']
                start_date = form.cleaned_data['start_date']
                end_date = form.cleaned_data['end_date']
                company = self.request.user.userprofile.user_company

                lookups = (Q(job_company=self.request.user.userprofile.user_company)) 

                if start_date:
                    lookups = lookups & Q(job_created_on__gte=start_date)
                if end_date:
                    lookups = lookups & Q(job_created_on__lte=end_date)
                if status == 'Active':
                    lookups = lookups & Q(job_status=status)
                if status == 'Inactive':
                    lookups = lookups & Q(job_status=status)

                jobs=Jobs.objects.exclude(job_is_deleted = True).filter(lookups)

        else:
            form = JobSearchForm()
            company_name = self.request.user.userprofile.user_company
            jobs = Jobs.objects.exclude(
                                job_is_deleted = True
                            ).filter(
                                job_company=self.request.user.userprofile.user_company
                            )

        return render(request, self.template_name, {'form': form, 'jobs': jobs}) 
django django-models django-forms django-templates django-views
1个回答
2
投票
class JobListView(LoginRequiredMixin, generic.ListView):
    template_name = 'jobs/job.html'
    form_ = JobSearchForm()
    paginate_by = 5
    context_object_name = 'jobs'

    def get_queryset(self, *args, **kwargs):
        if 'status' in self.request.GET:
            self.form_ = JobSearchForm(self.request.GET)
            jobs = Jobs.objects.none()

            if self.form_.is_valid():
                status = self.form_.cleaned_data['status']
                start_date = self.form_.cleaned_data['start_date']
                end_date = self.form_.cleaned_data['end_date']
                company = self.request.user.userprofile.user_company

                lookups = (Q(job_company=self.request.user.userprofile.user_company)) 

                if start_date:
                    lookups = lookups & Q(job_created_on__gte=start_date)
                if end_date:
                    lookups = lookups & Q(job_created_on__lte=end_date)
                if status == 'Active':
                    lookups = lookups & Q(job_status=status)
                if status == 'Inactive':
                    lookups = lookups & Q(job_status=status)

                jobs = Jobs.objects.exclude(job_is_deleted = True).filter(lookups)
        else:
            company_name = self.request.user.userprofile.user_company
            jobs = Jobs.objects.exclude(
                                job_is_deleted = True
                            ).filter(
                                job_company=self.request.user.userprofile.user_company
                            )
        return jobs


    def get_context_data(self, *args, **kwargs):
        context = super(JobListView, self).get_context_data(**kwargs)
        context["form"] = self.form_
        return context

你可以从qazxsw POI继承和使用qazxsw POI

如果你需要它默认为所有的数据,而不是空查询集的,如果表单无效,请使用ListViewpaginate_by代替。这是工作

© www.soinside.com 2019 - 2024. All rights reserved.