django_tables2: разбиение на страницы по алфавиту - PullRequest
0 голосов
/ 10 апреля 2020

Я использую django_tables2 для отображения некоторых данных - однако. Я бы хотел, чтобы нумерация страниц производилась буквами алфавита. Т.е. страница 1 - это все записи, начинающиеся с буквы A, страница 2 - все записи, начинающиеся с буквы B. et c.

Я думаю, что это было бы относительно просто сделать, но я не могу найти ни одного примера этого! Это не возможно? Возможно, я использовал неправильные условия поиска.

В настоящее время мои входные данные довольно просты - хотя просто указание мне на некоторые материалы было бы так же полезно, как и указание, как изменить код.

tables.py:

import django_tables2 as tables
from .models import Person, Languages
from django_tables2.utils import A  # alias for Accessor

class LanguagesTable(tables.Table):
    name = tables.LinkColumn("language_detail", args=[A("glottocode")])
    class Meta:
        model = Languages
        template_name = "django_tables2/bootstrap.html"
        fields = ("name", )

urls.py

from django.urls import path
from django.conf.urls import url
from . import views

urlpatterns = [
    #url(r'^$', views.home, name='home'),
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
    path('languages/', views.LanguagesTable.as_view(), name='languages'),
    #path('languages/', views.LanguagesTable, name='languages'),
    path('languages/<str:pk>/', views.language_detail, name='language_detail'),
    path('phylogeny/', views.phylogeny, name='phylogeny'),
    #path("people/", views.PersonListView.as_view()),
]

models.py

class Languages(models.Model):
    id = models.TextField(db_column='ID', blank=True, null=False, primary_key=True)  # Field name made lowercase.
    name = models.TextField(db_column='Name', blank=True, null=True)  # Field name made lowercase.
    glottocode = models.TextField(db_column='Glottocode', blank=True, null=True)  # Field name made lowercase.
    glottolog_name = models.TextField(db_column='Glottolog_Name', blank=True, null=True)  # Field name made lowercase.
    iso639p3code = models.TextField(db_column='ISO639P3code', blank=True, null=True)  # Field name made lowercase.
    macroarea = models.TextField(db_column='Macroarea', blank=True, null=True)  # Field name made lowercase.
    latitude = models.FloatField(db_column='Latitude', blank=True, null=True)  # Field name made lowercase.
    longitude = models.FloatField(db_column='Longitude', blank=True, null=True)  # Field name made lowercase.
    family = models.TextField(db_column='Family', blank=True, null=True)  # Field name made lowercase.
    label = models.TextField(db_column='Label', blank=True, null=True)  # Field name made lowercase.
    project = models.TextField(db_column='Project', blank=True, null=True)  # Field name made lowercase.
    projectfile = models.TextField(db_column='ProjectFile', blank=True, null=True)  # Field name made lowercase.
    projectname = models.IntegerField(db_column='ProjectName', blank=True, null=True)  # Field name made lowercase.
    entrydate = models.TextField(db_column='EntryDate', blank=True, null=True)  # Field name made lowercase.
    comment = models.TextField(db_column='Comment', blank=True, null=True)  # Field name made lowercase.
    link = models.TextField(db_column='Link', blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'languages'
...