开发者

One admin for multiple sites

开发者 https://www.devze.com 2022-12-25 21:43 出处:网络
I have two sites with different SITE_IDs, but I want to have only one admin interface for both 开发者_开发问答sites.

I have two sites with different SITE_IDs, but I want to have only one admin interface for both 开发者_开发问答sites.

I have a model, which is just an extended 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)

I don't know why, but there are only pages for current site in admin interface. On http://site1.com/admin/ I see flatpages for site1, on http://site2.com/admin/ I see flatpages for site2. But I want to see all pages in http://site1.com/admin/ interface! What am I doing wrong?


It's because of CurrentSiteManager. According to the documentation "it's a model manager that automatically filters its queries to include only objects associated with the current Site."

Remove the line and everyting should work as expected. Or if you make use of currobjects somewhere else in your code note that admin interface always use the first manager specified, so you need to specify the standard manager first, like this:

# 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)
0

精彩评论

暂无评论...
验证码 换一张
取 消