gpt4 book ai didi

python - 在 django 中向租户管理员隐藏公共(public)模型

转载 作者:行者123 更新时间:2023-12-04 10:28:38 24 4
gpt4 key购买 nike

我在我的项目中使用 Django 租户模式。我的一些模型是公开的,由所有租户共享,一些模型是给tenant_schema。我已经从( shared_app 和 tenant_app )注册了所有模型。假设模型 public1、public2 是共享应用程序,我有 2 个注册租户(租户 1 和租户 2)。我面临的问题: 1. 当我打开租户 1 的管理员 (tenant1.domain.com/api/admin) 时,我可以查看 public1 模型,但无法在租户 1 和租户 2 中一致地查看数据。
2.有没有办法在租户管理员中隐藏公共(public)模式并且只在域管理员中显示公共(public)模型( domain/api/admin )

最佳答案

假设您的租户模型位于“租户”应用程序中,
您的租户 admin.py 应该是这样的:(基于 https://www.javaer101.com/en/article/12974795.html )

from django.contrib import admin
from django.apps import apps
from django_tenants.utils import get_public_schema_name


class TenantsAdmin(admin.ModelAdmin):
'''
Hides public models from tenants
'''
def has_view_permission(self,request, view=None):
if request.tenant.schema_name == get_public_schema_name():
return True
else:
return False

def has_add_permission(self,request, view=None):
if request.tenant.schema_name == get_public_schema_name():
return True
else:
return False

def has_change_permission(self,request, view=None):
if request.tenant.schema_name == get_public_schema_name():
return True
else:
return False

def has_delete_permission(self,request, view=None):
if request.tenant.schema_name == get_public_schema_name():
return True
else:
return False

def has_view_or_change_permission(self, request, view=None):
if request.tenant.schema_name == get_public_schema_name():
return True
else:
return False

app = apps.get_app_config('tenants')
for model_name, model in app.models.items():
admin.site.register(model, TenantsAdmin)

关于python - 在 django 中向租户管理员隐藏公共(public)模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60521498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com