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