我通常通过 connection_created 信号控制 Django 使用的模式。这样的东西在 manage.py 和 wsgi.py 中都有效(这直接来自我的 wsgi.py)。
DONE = []
def set_schema(sender, **kwargs):
if DONE:
return
DONE[:] = [1]
from django.db import connection
cursor = connection.cursor()
cursor.execute("set search_path to my_schema, public;")
DONE[:] = []
from django.db.backends.signals import connection_created
connection_created.connect(set_schema)
丑陋是为了防止递归,在DONE
Django 1.4 或 1.5 之前不需要。
Django 将在您列出的任何模式中查找表,但只会在列表的第一个中创建它们。
https://docs.djangoproject.com/en/1.5/ref/signals/#connection-created