首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于用户自定义feincms页面管理

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

Stack Overflow用户
提问于 2013-02-09 21:06:54
回答 2查看 555关注 0票数 6

我正在尝试找到一种方法来过滤页面对象的管理查询集,基于用户提供的,我已经考虑过的(伪代码):

代码语言:javascript
复制
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实例。一个冗长的解决方案可能是根本不加载页面模块,并覆盖页面模型对象或管理,例如:

代码语言:javascript
复制
from feincms... PageAdmin

class MyPage(Page):
    objects = CustomManager()

admin.site.register(MyPage, PageAdmin)

文档指出,可以以类似的方式进行setup your own page module,但对于一个简单的需求,似乎需要进行大量的配置。

有没有更简单的方法来覆盖feincms模块的admin queryset或model admin?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-19 16:27:09

Django v1.7还允许您在FeinCMS设置中设置FEINCMS_USE_PAGE_ADMIN=False

然后,只需像往常一样继承PageAdmin,并将模型管理员注册到模型中即可。

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

票数 6
EN

Stack Overflow用户

发布于 2013-02-09 22:09:45

这里的诀窍是您不能注销feincms模块,因为执行了一些魔术。而不是注册自己的feincms Page对象,您可以像这样修补方法:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14788476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档