Auto-sync: 2026-04-21 20:03

This commit is contained in:
2026-04-21 20:03:06 +08:00
parent c4a04cbcee
commit 24218550d2
61 changed files with 4904 additions and 921 deletions

View File

@@ -0,0 +1,222 @@
---
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. 最后补三级权限体系(总部/门店/经纪人)
---
# 上海房产中介 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+
前端路径:
- 路径 ADjango Admin + 定制,最快上手,适合 MVP
- 路径 BHTMX + Alpine.js + Tailwind推荐中期方案
- 路径 CVue3 / 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 11-2 月MVP
- 租户注册 / 登录
- 房源 CRUD + 图片上传
- 客源基础管理
- Django Admin 后台
Phase 22-3 月)核心业务:
- 带看流程
- 合同模板 + 生成
- 员工角色权限
- 基础报表
Phase 33-4 月)增长功能:
- 佣金结算
- 渠道推广(链家 / 安居客对接)
- 微信小程序端
- BI 数据看板
Phase 4 商业化:
- 套餐 / 计费系统
- 多城市扩展
## 七、优先推进建议
如果要最快落地,建议优先顺序:
1. django-tenants 完整配置
2. 房源 / 客源 / 带看数据模型
3. Django Admin 深度定制
4. 权限系统设计
5. 前端升级到 HTMX 或 Vue

View File

@@ -0,0 +1,98 @@
---
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. 最后补三级权限体系(总部/门店/经纪人)