Files
nexus/Hermes/yunzhi/技术笔记/django-tenants 完整配置指南.md

5.9 KiB
Raw Blame History

title, created, tags, category
title created tags category
django-tenants 完整配置指南 2026-04-21
django
django-tenants
postgresql
saas
multi-tenant
技术笔记

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

示例:

八、本地开发配置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