--- title: django-tenants 完整配置指南 created: 2026-04-21 tags: [django, django-tenants, postgresql, saas, multi-tenant] category: 技术笔记 --- # django-tenants 完整配置指南 ## 一、安装依赖 pip install django-tenants psycopg2-binary django-jazzmin ## 二、项目目录结构 myproject/ ├── config/ │ ├── settings/ │ │ ├── base.py │ │ ├── development.py │ │ └── production.py │ ├── urls.py │ └── wsgi.py ├── apps/ │ ├── tenants/ │ ├── subscription/ │ ├── accounts/ │ ├── listings/ │ ├── clients/ │ └── showings/ ├── manage.py └── requirements.txt ## 三、核心 Model:租户与域名 - Company 继承 TenantMixin - Domain 继承 DomainMixin - 每一个中介公司 = 一个租户 = 一个独立 PostgreSQL Schema - 每个公司可绑定多个域名/子域名 ## 四、Settings 完整配置 关键点: - SHARED_APPS 放公共 Schema 应用 - TENANT_APPS 放租户私有应用 - TENANT_MODEL = "tenants.Company" - TENANT_DOMAIN_MODEL = "tenants.Domain" - DATABASES 使用 django_tenants.postgresql_backend - DATABASE_ROUTERS 使用 TenantSyncRouter - TenantMainMiddleware 必须第一个 - ROOT_URLCONF / PUBLIC_SCHEMA_URLCONF 分离 - AUTH_USER_MODEL = accounts.User ## 五、URL 路由拆分 - config/urls_public.py:公共域名、官网、注册、登录、超级管理后台 - config/urls_tenant.py:租户子域名、租户后台、房源/客源/带看/员工模块 ## 六、自定义 User Model(跨租户关键) - User 继承 AbstractUser - role 支持平台超管、公司管理员、门店经理、资深经纪人、经纪人、实习经纪人 - Branch 作为门店模型 ## 七、初始化与常用命令 - createdb realestate_saas - python manage.py migrate_schemas --shared - python manage.py createsuperuser - python manage.py shell 创建 Company 与 Domain 示例: - schema_name = zuoan - domain = zuoan.localhost - 访问 http://zuoan.localhost:8000/admin/ 进入专属后台 ## 八、本地开发配置(hosts 文件) - 127.0.0.1 localhost - 127.0.0.1 zuoan.localhost - 127.0.0.1 lianhe.localhost - 127.0.0.1 xincheng.localhost 开发环境要点: - ALLOWED_HOSTS 包含 .localhost - 本地不用 HTTPS ## 九、数据隔离验证 使用 schema_context 切换 schema,验证 Listing 等数据互相隔离。 ## 下一步建议 推荐顺序: 1. 先做房源/客源/带看完整数据模型 2. 再做 Django Admin 深度定制(Jazzmin 主题) 3. 最后补三级权限体系(总部/门店/经纪人)