![](/img/trans.png)
[英]Django admin list page takes forever to load after overriding get_queryset method
[英]Overriding django admin get_queryset()
我有两个模型,其中一个是代理 model。在管理员中,我注册了两个模型并覆盖get_queryset()
方法,但它没有按预期工作。
管理员.py
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
return qs.filter(language='en')
@admin.register(ProxyCategory)
class ProxyCategoryAdmin(CategoryAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
return qs.filter(language='zh')
在管理页面ProxyCateegoryAdmin 中没有显示对象,如果我从CategoryAdmin中删除get_queryset()
,它可以工作但想要过滤它们。 提前致谢
如果您希望 ProxyCategoryAdmin 返回两种语言,请执行以下操作:
@admin.register(ProxyCategory)
class ProxyCategoryAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
return qs.filter(language_in=['zh','en'])
当您继承 CategoryAdmin 时,您最终会得到 2 个过滤器:EN 和 ZH 而不是 EN 或 ZH
可以在get_queryset
方法中使用self.model
来过滤出正确的model。
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
if self.model == Category:
return qs.filter(language='en')
return qs
@admin.register(ProxyCategory)
class ProxyCategoryAdmin(CategoryAdmin):
pass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.