如何在Django Admin.TabularInline中限制大规模数据的查询

时间:2019-05-23 09:44:28

标签: django python-2.7 django-models django-forms django-admin

我当前正在使用admin.TabularInline加载5万条数据记录,该页面由于超时而无法加载。我使用的是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 :(得分:0)

您尝试过吗?

class RemDetailInline(admin.TabularInline):
    ...

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