Python 基于用户自定义feincms页面管理

Python 基于用户自定义feincms页面管理,python,django,django-admin,feincms,Python,Django,Django Admin,Feincms,我正试图找到一种方法,根据用户提供的内容(伪代码),筛选页面对象的管理查询集: 这将不起作用,因为feincms会检查完全加载的django实例。详细的解决方案可能是根本不加载页面模块,或者覆盖页面模型对象或管理,例如: from feincms... PageAdmin class MyPage(Page): objects = CustomManager() admin.site.register(MyPage, PageAdmin) 文档说明可以以类似的方式进行配置,但对于一

我正试图找到一种方法,根据用户提供的内容(伪代码),筛选页面对象的管理查询集:

这将不起作用,因为feincms会检查完全加载的django实例。详细的解决方案可能是根本不加载页面模块,或者覆盖页面模型对象或管理,例如:

from feincms... PageAdmin

class MyPage(Page):
    objects = CustomManager()

admin.site.register(MyPage, PageAdmin)
文档说明可以以类似的方式进行配置,但对于一个简单的需求来说,似乎需要很多配置


有没有更简单的方法来覆盖feincms模块的管理员查询集或模型管理员?

这里的技巧是,由于执行了一些魔术,您无法注销feincms模块。不必注册自己的feincms页面对象,您可以像这样修补这些方法:

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 = queryset

FeinCMS v1.7还允许您在Django设置中设置
FeinCMS\u USE\u PAGE\u ADMIN=False

然后,像往常一样,只需创建一个子类
PageAdmin
,然后自己向模型注册模型管理员


如果您使用的是v1.7,您还应该开始从feincms.module.page.modeladmins导入
PageAdmin

不应该覆盖标准
PageAdmin
工作吗?@arie,是的,但不是以传统的方式,我刚刚找到了如何正确修补它们的方法。
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 = queryset