5.9 KiB
5.9 KiB
title, created, tags, category
| title | created | tags | category | |||||
|---|---|---|---|---|---|---|---|---|
| django-tenants 完整配置指南 | 2026-04-21 |
|
技术笔记 |
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 等数据互相隔离。
下一步建议
推荐顺序:
- 先做房源/客源/带看完整数据模型
- 再做 Django Admin 深度定制(Jazzmin 主题)
- 最后补三级权限体系(总部/门店/经纪人)
上海房产中介 SaaS 系统规划
一、多租户架构选型
Django 多租户有三种主流方案,针对这个场景推荐独立 Schema 方案,也就是基于 PostgreSQL Schema 隔离的 django-tenants。
| 方案 | 原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 共享 Schema | 每张表加 tenant_id 字段 | 简单,运维成本低 | 数据隔离风险高 | 小规模、低安全需求 |
| 独立 Schema | PostgreSQL Schema 隔离 | 隔离好,性能佳 | 稍复杂 | 中介 SaaS,推荐 |
| 独立数据库 | 每租户独立 DB | 最高隔离 | 运维成本极高 | 超高安全需求 |
推荐使用 django-tenants:
pip install django-tenants
二、整体系统模块规划
SaaS 平台层:
- 租户注册
- 套餐管理
- 计费
- 超级后台
各中介公司 Tenant:
- 房源管理
- 客源管理
- 员工 / 权限管理
- 带看管理
- 合同管理
- 报表 / BI 看板
- 渠道推广
- 财务佣金
- 消息 / 通知中心
核心 Django App 拆分:
- tenants:租户管理(公共 Schema)
- accounts:用户 / 员工 / 角色权限
- listings:房源管理(核心)
- clients:客源 / 客户跟进
- showings:带看记录
- contracts:合同管理
- commissions:佣金 / 财务
- reports:数据报表
- notifications:消息通知
- subscription:套餐订阅(公共 Schema)
三、房源模块数据模型(核心)
Listing 关键字段包括:
- 基础信息:title、listing_type、status
- 上海地址结构:district、street、community、building、floor、unit
- 房屋属性:area、inner_area、layout、orientation、decoration、floor_total
- 价格:price、price_unit
- 归属:agent、source、exclusive
- 证件:certificate_no
- 时间:created_at、updated_at
四、技术栈推荐
后端:
- Django 5.x + DRF
- django-tenants
- django-guardian
- celery + redis
- django-filter
- PostgreSQL 15+
前端路径:
- 路径 A:Django Admin + 定制,最快上手,适合 MVP
- 路径 B:HTMX + Alpine.js + Tailwind,推荐中期方案
- 路径 C:Vue3 / React + DRF,长期推荐
建议:先 A,再 B,最后 C。
五、租户路由设计
通过子域名区分租户:
- company-a.yourapp.com
- company-b.yourapp.com
- admin.yourapp.com
核心设置:
- TENANT_MODEL = "tenants.Company"
- TENANT_DOMAIN_MODEL = "tenants.Domain"
- SHARED_APPS 放公共应用
- TENANT_APPS 放租户私有应用
六、开发阶段规划
Phase 1(1-2 月)MVP:
- 租户注册 / 登录
- 房源 CRUD + 图片上传
- 客源基础管理
- Django Admin 后台
Phase 2(2-3 月)核心业务:
- 带看流程
- 合同模板 + 生成
- 员工角色权限
- 基础报表
Phase 3(3-4 月)增长功能:
- 佣金结算
- 渠道推广(链家 / 安居客对接)
- 微信小程序端
- BI 数据看板
Phase 4 商业化:
- 套餐 / 计费系统
- 多城市扩展
七、优先推进建议
如果要最快落地,建议优先顺序:
- django-tenants 完整配置
- 房源 / 客源 / 带看数据模型
- Django Admin 深度定制
- 权限系统设计
- 前端升级到 HTMX 或 Vue