我正在尝试找到一种方法来过滤页面对象的管理查询集,基于用户提供的,我已经考虑过的(伪代码):
from feincms... Page
class MyPageAdmin(PageAdmin):
def __init__(self, *args, **kwargs):
'monkey business'
super(MyPageAdmin, self).__init__(*args, **kwargs)
admin.site.unregister(Page)
admin.site.register(Page, MyPageAdmin)这不会起作用,因为feincms会检查完全加载的django实例。一个冗长的解决方案可能是根本不加载页面模块,并覆盖页面模型对象或管理,例如:
from feincms... PageAdmin
class MyPage(Page):
objects = CustomManager()
admin.site.register(MyPage, PageAdmin)文档指出,可以以类似的方式进行setup your own page module,但对于一个简单的需求,似乎需要进行大量的配置。
有没有更简单的方法来覆盖feincms模块的admin queryset或model admin?
发布于 2013-03-19 16:27:09
Django v1.7还允许您在FeinCMS设置中设置FEINCMS_USE_PAGE_ADMIN=False。
然后,只需像往常一样继承PageAdmin,并将模型管理员注册到模型中即可。
如果你使用的是v1.7,你也应该开始从feincms.module.page.modeladmins导入PageAdmin。
发布于 2013-02-09 22:09:45
这里的诀窍是您不能注销feincms模块,因为执行了一些魔术。而不是注册自己的feincms Page对象,您可以像这样修补方法:
from django.conf import settings
from feincms.module.page.models import PageAdmin
def queryset(self, request):
qs = super(PageAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(site__id__exact=settings.SITE_ID)
PageAdmin.queryset = querysethttps://stackoverflow.com/questions/14788476
复制相似问题