Как ограничить запрос в Django Admin.TabularInline большими данными - PullRequest
1 голос
/ 23 мая 2019

В настоящее время я загружаю 50 тыс. Записей данных, используя admin.TabularInline, страница не загружается из-за истечения времени ожидания. Я использую Django версии 1.9, и обновление не вариант.

Я уже пытался переопределить get_queryset, чтобы вернуть только 10 записей.

class RemDetailInline(admin.TabularInline):
    model = RemDetail
    fields = ('rem_name', 'ben_name', 'payout_amount', 
              'payout_currency', 'status','type', 'date_created')
    readonly_fields = ('rem_name', 'ben_name', 'payout_amount', 
                       'payout_currency', 'status', 'type', 'date_created')
    extra = 0
    max_num = 0
    show_change_link = True
    ordering = ['-date_created',]

    def get_queryset(self, request):
        queryset = super(RemDetailInline, self).get_queryset(request)
        ids = queryset.order_by('-id').values('pk')[:10] # limit 10
        qs = RemDetailInline.objects.filter(pk__in=ids).order_by('-id')
        return qs

Я ожидаю, что результат выдаст 10 записей, вместо того, что тайм-аут страницы из-за большого объема (50k записей)

1 Ответ

0 голосов
/ 23 мая 2019

Вы пробовали это?

class RemDetailInline(admin.TabularInline):
    ...

    def get_queryset(self, request):
        <b>return super(RemDetailInline, self).get_queryset(request).order_by('-id')[:10]</b>
...