首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-租户-模式和avatar

django-租户-模式和avatar
EN

Stack Overflow用户
提问于 2017-01-08 06:36:25
回答 1查看 1K关注 0票数 0

多租户django 1.8设置(使用django-租户模式)

requirements.txt:

代码语言:javascript
复制
Django==1.8.16
django-allauth==0.27.0
django-tenant-schemas==1.6.4
django-avatar==3.1.0
...

使租户尽可能地保持隔离,因此只共享这些应用程序(注意,allauth不在这里,每个租户都有自己的auth_user表):

代码语言:javascript
复制
SHARED_APPS = (
    'tenant_schemas',  # mandatory
    'customers', 
    'django.contrib.contenttypes',
)

服务化身(来自/media URL)现在提出了一个问题,因为化身URL不知道租户。化身是从

代码语言:javascript
复制
/media/avatars/<user ID>/userx-pic.jpg

但是为了避免冲突,它应该考虑到租户。目标是:

代码语言:javascript
复制
/media/avatars/<tenant>/<user ID>/userx-pic.jpg

如何配置?我正在考虑使用RedirectView (https://docs.djangoproject.com/en/1.10/ref/class-based-views/base/#redirectview)

..。但是这些头像也需要存放在正确的位置。所以问题有两个:

  1. 如何使化身在正确的-tenant识别位置?
  2. 如何正确地为他们服务?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 07:53:36

您可以尝试将媒体文件保存到特定的租户文件夹中,方法是在文件字段中指定并照常提供服务。例如:

代码语言:javascript
复制
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)

附注:为了限制用户访问化身的权限,请看一看这篇文章

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41530171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档