Joe*_*e J 10 django pagination inline django-forms django-admin
我有一个现有的系统,我希望限制管理内联中显示的相关对象的数量.
例如,我在管理员中有一个模型,其内联可以包含多达数千个相关记录.我只想显示最近的记录(比如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
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个"切片一旦切片就无法过滤查询".我甚至尝试使用分页器,但得到了同样的错误.
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
Run Code Online (Sandbox Code Playgroud)
我理解为什么我会收到此错误,但我想知道是否有一种不同的方法可以限制显示的内联对象的数量.也许管理员不是设计用于处理这么多内联对象,但是觉得必须有限制管理内联记录集的方法,并防止因为内联对象太多导致浏览器/服务器崩溃的情况.任何建议都非常感谢.谢谢你的阅读.
Lef*_*que 11
试试这个:
from django.forms.models import BaseInlineFormSet
class TicketNoteFormSet(BaseInlineFormSet):
def get_queryset(self) :
qs = super(TicketNoteFormSet, self).get_queryset()
return qs[:5000]
class TicketNoteAdmin(models.TabularInline):
model = models.TicketNote
formset = TicketNoteFormSet
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4192 次 |
| 最近记录: |