多个站点的一个管理员

时间:2010-04-05 09:34:25

标签: django django-admin django-sites

我有两个具有不同SITE_ID的网站,但我希望这两个网站只有一个管理界面。

我有一个模型,它只是一个扩展的FlatPage:

# models.py
class SFlatPage(FlatPage):
    currobjects = CurrentSiteManager('sites')

    galleries = models.ManyToManyField(Gallery)
    # etc

# admin.py
class SFlatPageAdmin(FlatPageAdmin):
    fieldsets = None

admin.site.register(SFlatPage, SFlatPageAdmin)
admin.site.unregister(FlatPage)

我不知道为什么,但管理界面中只有当前网站的页面。在http://site1.com/admin/我看到site1的flatpages,http://site2.com/admin/我看到site2的flatpages。但是我希望看到http://site1.com/admin/界面中的所有页面!我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是因为CurrentSiteManager。根据{{​​3}}“它是一个模型管理器,它自动过滤其查询以仅包含与当前站点关联的对象。”

删除该行,每个应该按预期工作。或者如果您在代码中的其他地方使用currobjects,请注意管理界面始终使用指定的第一个管理器,因此您需要首先指定标准管理器,如下所示:

# models.py
class SFlatPage(FlatPage):
    objects = models.Manager() # Is first, so will be used by admin
    currobjects = CurrentSiteManager('sites') # your alternative manager

    galleries = models.ManyToManyField(Gallery)