多租户django 1.8设置(使用django-租户模式)
requirements.txt:
Django==1.8.16
django-allauth==0.27.0
django-tenant-schemas==1.6.4
django-avatar==3.1.0
...使租户尽可能地保持隔离,因此只共享这些应用程序(注意,allauth不在这里,每个租户都有自己的auth_user表):
SHARED_APPS = (
'tenant_schemas', # mandatory
'customers',
'django.contrib.contenttypes',
)服务化身(来自/media URL)现在提出了一个问题,因为化身URL不知道租户。化身是从
/media/avatars/<user ID>/userx-pic.jpg但是为了避免冲突,它应该考虑到租户。目标是:
/media/avatars/<tenant>/<user ID>/userx-pic.jpg如何配置?我正在考虑使用RedirectView (https://docs.djangoproject.com/en/1.10/ref/class-based-views/base/#redirectview)
..。但是这些头像也需要存放在正确的位置。所以问题有两个:
发布于 2017-01-09 07:53:36
您可以尝试将媒体文件保存到特定的租户文件夹中,方法是在文件字段中指定至并照常提供服务。例如:
from django.contrib.auth.models import User
from django.db import connection
def get_tenant_specific_upload_folder(instance, filename):
upload_folder = 'avatars/{0}/{1}/{2}'.format(
connection.tenant,
instance.user.pk,
filename
)
return upload_folder
class Avatar(models.Model):
user = models.ForeignKey(User)
file = models.FileField(upload_to=get_tenant_specific_upload_folder)附注:为了限制用户访问化身的权限,请看一看这篇文章
https://stackoverflow.com/questions/41530171
复制相似问题