使用Djangotables2在FormVi中分页

2024-09-23 22:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用django-tables2(请参见here)对我的对象进行分页,但我无法对其进行分页。 请参阅下面的代码:

表单.py

import django_tables2 as tables
from django.forms.widgets import CheckboxSelectMultiple
from django.forms.models import ModelMultipleChoiceField
from django.forms import Form
from django.utils.translation import ugettext_lazy as _
from my.apps.enrolment.models import Enrolment
from .models import SmartCard

class CreateSmartCardsTable(tables.Table):
    pk = tables.CheckBoxColumn(tables.Attrs(td__input={'name': 'enrolments'}))
    location = tables.Column(_('location'), accessor='household.location')
    family_name = tables.Column(_('family name'), accessor='household.name')
    recipient_name = tables.Column(_('recipient name'), accessor='person')
    number_of_beneficiaries = tables.Column(_('number of beneficiaries'), accessor='beneficiaries.count')

class CreateSmartCardsSelectMultiple(CheckboxSelectMultiple):
    def render(self, name, value, attrs=None, choices=Enrolment.objects.none()):
        table = CreateSmartCardsTable(self.choices)
        # The code below is where I want to paginate, but cannot get hold of the request object
        #table.paginate(page=request.GET.get('page', 1), per_page=25)
        return table.as_html()

class CreateSmartCardsMultipleChoiceField(ModelMultipleChoiceField):
    widget = CreateSmartCardsSelectMultiple

    @property
    def choices(self):
        return self.queryset

class CreateSmartCardsForm(Form):
    enrolments = CreateSmartCardsMultipleChoiceField(queryset=Enrolment.objects.none(), required=False, label='')

    def __init__(self, *args, **kwargs):
        super(CreateSmartCardsForm, self).__init__(*args, **kwargs)
        self.enrolments = Enrolment.objects.approved()
        self.fields['enrolments'].queryset = self.enrolments

视图.py

^{pr2}$

包括 table.paginate(page=request.GET.get('page', 1), per_page=25)是我要分页的地方。但我无法获取请求对象以启用分页。在

我怎样才能做到这一点?在


Tags: djangonamefromimportselftablesaspage