несколько экземпляров администратора Django - PullRequest
1 голос
/ 19 октября 2011

Мне нужно создать один экземпляр администратора django, который может использоваться несколькими компаниями. схема:

Company1
     Branch 1
          User 1
          User 2
     Branch 2
          User 3
          .......

Company 2
     Branch 1
          User 4
          User 5
     Branch 2
          User 6
          .......

Идея заключается в том, что пользователи 1 и 2 могут видеть (но не могут редактировать) пользовательские 3 материала. Где пользователи 1 и 2 могут видеть и редактировать содержимое друг друга. Все это в рамках Company1 (только).

Мой вопрос: есть ли разработчики, которые сталкивались с подобной проблемой и хотят поделиться своими мыслями о том, как этого можно достичь в dj admin? Какие-нибудь дополнительные пакеты, которые можно использовать для расширения функциональности dj admin в правильном направлении?

Я осознаю, что это ставит под сомнение идею того, для чего был разработан dj admin (не нужно об этом предупреждать) ... но, так как не хватает рук, чтобы спроектировать и построить что-то с нуля для этого проекта, мне нужно нажмите на функциональность DJ администратора, насколько я могу.

Все мысли будут высоко оценены!

1 Ответ

1 голос
/ 20 октября 2011

Я был в аналогичной ситуации, с дополнительным требованием, чтобы пользователь мог входить в несколько компаний и мог «переключаться». Для этого я включил «текущую компанию» в сессию. Если в вашем случае вы просто искали у пользователя то, что ему разрешено видеть, это должно быть очень просто, переопределив ModelAdmin.queryset, например:

class CompanyGogglesAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(CompanyGoggleAdmin, self).queryset(request)
        user_company = request.user.company
        return qs.filter(**{ 'company' : user_company })

Вы можете использовать CompanyGogglesAdmin в качестве базового класса для всех тех моделей, которые могут быть отфильтрованы по «компании», которая просматривается компанией пользователя. Вы также можете сделать поле этой компании настраиваемым или - как я - искать «текущую» компанию по сеансу, а не по пользователю. См. Также Как реализовать глобальный неявный фильтр в Django admin?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...