Как использовать Django-фильтры с большими данными? - PullRequest
0 голосов
/ 24 января 2019

Я использую Django-фильтр с django_filters.ModelChoiceFilter. Я сталкиваюсь с проблемой, что веб-сайт работает очень медленно, если у меня есть большие данные в таблице Пригород.

class PDetailFilter(django_filters.FilterSet):
class Meta:
    model = PDetail
    fields = {
        # 'code': ['icontains'],
        # 'bu_name': ['icontains'],
        # 'bc_effect_date' : ['year__gt', 'year__lt', ],
    }

# Filter by Suburb
suburb = django_filters.ModelChoiceFilter(label="Suburb", queryset=Suburb.objects.all())

1 Ответ

0 голосов
/ 30 января 2019

Наконец я нашел ответ. Я использую django-autocomplete-light. Вы можете проверить учебное пособие здесь: https://django -autocomplete-light.readthedocs.io / en / master / tutorial.html

Вот некоторый исходный код В файле View.py:

class SuburbAutocomplete(autocomplete.Select2ListView):
def get_list(self):
    # Don't forget to filter out results depending on the visitor !
    # if not self.request.user.is_authenticated():
    #     return Suburb.objects.none()

    qs = Suburb.objects.all()
    if self.q:
        qs = qs.filter(suburb__istartswith=self.q)
    return qs

In Filters.py

# Filter by Suburb
suburb = django_filters.ModelChoiceFilter(
label="Suburb",
queryset=Suburb.objects.all(), 
widget=autocomplete.ModelSelect2(
    url='backend:suburb-autocomplete',
    attrs={
            # Set some placeholder
            'data-placeholder': 'Suburb ...',
            # Only trigger autocompletion after 2 characters have been typed
            'data-minimum-input-length': 2,
            'style': 'height:34px !important;'
        },
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...