Один админ для нескольких сайтов - PullRequest
0 голосов
/ 05 апреля 2010

У меня есть два сайта с разными 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/! Что я делаю не так?

1 Ответ

1 голос
/ 05 апреля 2010

Это из-за CurrentSiteManager. Согласно документации"это менеджер моделей, который автоматически фильтрует свои запросы, чтобы включить только объекты, связанные с текущим сайтом."

Удалите строку и все должно работать как положено. Или, если вы используете 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)
...