【问题标题】:multiple django admin instances多个 django 管理实例
【发布时间】:2011-10-19 08:08:40
【问题描述】:

我需要构建一个可供多家公司使用的 django admin 实例。 架构是:

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 管理功能的软件包?

我知道这对 dj admin 的设计目的提出了挑战(无需对此谨慎)......但是由于没有足够的人手来为这个项目从头开始设计和构建一些东西,所以我需要尽可能多地利用 dj 管理功能。

所有想法将不胜感激!

【问题讨论】:

    标签: django-admin


    【解决方案1】:

    我也遇到过类似的情况,另外要求一个用户可能在多家公司,并且可以“切换”。为此,我将“当前公司”放入会话中。如果在您的情况下,您只是在用户中查找他们被允许看到的内容,那么通过覆盖 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 作为所有模型的基类,这些模型可以由用户公司查找的“公司”过滤。您还可以使该公司字段可配置,或者 - 像我一样 - 从会话而不是用户中查找“当前”公司。另见How can I implement a global, implicit filter in Django admin?

    【讨论】:

    • 感谢您抽出宝贵时间丹尼!我非常喜欢基类的想法。对 dj-admin 方法进行了一些思考后,我认为我将拔出的头发量试图让管理员做我需要的事情,这很重要:) 如此痛苦,我将再次重新实现 CRUD,感到无聊并保持我的头发。
    猜你喜欢
    • 2011-12-08
    • 2021-08-15
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2013-12-25
    • 2011-07-15
    相关资源
    最近更新 更多