我需要构建一个可供多家公司使用的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管理员中实现这一点的想法?任何其他包可用于向正确的方向扩展dj管理功能?
我意识到这挑战了dj管理员设计的想法(无需提醒)...但由于没有足够的手来设计和构建一些从头开始的项目我需要尽可能多地使用dj管理功能。
所有的想法将不胜感激!
答案 0 :(得分: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?