我有一个现有系统,我希望限制管理内联中显示的相关对象的数量。
例如,我在管理员中有一个内联模型,它可以包含多达数千条相关记录。我只想显示最近的记录(比如 5K 最近的记录)。(理想情况下,可以通过内联记录进行分页,但仅限制它们对我来说就足够了。)我想避免管理页面加载 60K 内联记录的情况,这会使浏览器崩溃并给服务器带来负担。
基于以下 SO 问题,我创建了以下代码段: 如何限制查询集/要在 Django 管理站点中查看的记录?
class TicketNoteAdmin(models.TabularInline):
model = models.TicketNote
def queryset(self, request):
qs = super(TicketNoteAdmin, self).queryset(request).order_by('-created')[:5000]
return qs
但是,我得到一个“一旦切片被提取就无法过滤查询”。我什至尝试过使用分页器,但得到了同样的错误。
from django.core.paginator import Paginator
class TicketNoteAdmin(models.TabularInline):
model = models.TicketNote
def queryset(self, request):
qs = super(TicketNoteAdmin, self).queryset(request).order_by('-created')
p = Paginator(qs, 5000)
page1 = p.page(1)
return page1.object_list
我理解为什么会出现此错误,但我想知道是否有不同的方法可以让我限制显示的内联对象的数量。也许管理员不是为处理这么多内联对象而设计的,但觉得必须有办法限制管理员内联记录集并防止浏览器/服务器可能因内联对象过多而崩溃的情况。非常感谢任何建议。感谢您的阅读。