【问题标题】:One admin for multiple sites一个管理员管理多个站点
【发布时间】:2010-04-05 09:34:24
【问题描述】:

我有两个具有不同 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 的平面页面,在http://site2.com/admin/ 我看到site2 的平面页面。但是我想查看http://site1.com/admin/界面中的所有页面!我做错了什么?

【问题讨论】:

  • 那个 currobjects 管理器是怎么回事?你的意图是什么,标准对象管理器是否正在做任何事情?

标签: django django-admin django-sites


【解决方案1】:

因为CurrentSiteManager。根据the documentation 的说法,“它是一个模型管理器,可以自动过滤其查询以仅包含与当前站点关联的对象。”

删除该行,一切都应该按预期工作。或者,如果您在代码中的其他地方使用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)

【讨论】:

  • 哦,谢谢。我一直在想我的自定义名称的自定义管理器不会覆盖默认管理器
猜你喜欢
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多