【发布时间】:2020-03-08 10:25:31
【问题描述】:
我的 postgres 数据库中有许多模式。我想在我的所有模式(UNION ALL)中获得一个查询集。
我正在使用 Django 2.2、python 3.6 和 postgres 9.7。
我尝试定义一个特定的 DBManager,例如:
class UnionManager(models.Manager):
def get_queryset(self):
return super().get_queryset().using("db1") | super().get_queryset().using("db2")
class Account(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
label = models.CharField(max_length=100, null=True)
objects = models.Manager()
union_manager = UnionManager()
并具有以下数据库配置:
config = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'databasename',
'USER': bdd_user,
'PASSWORD': db_pwd,
'PORT': bdd_port,
'HOST': host_writer,
},
'db1': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=db1,extensions'
},
'NAME': 'databasename',
'USER': bdd_user,
'PASSWORD': db_pwd,
'PORT': bdd_port,
'HOST': host_writer,
},
'db2': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=db2,extensions'
},
'NAME': 'databasename',
'USER': bdd_user,
'PASSWORD': db_pwd,
'PORT': bdd_port,
'HOST': host_writer,
}
}
查询集仅返回来自 UnionManager 类(此处为“db1”)中的第一个模式 (Account.union_manager.all()) 的对象
有什么建议吗?
【问题讨论】:
-
欢迎来到 Stackoverflow。请提供更多关于什么不起作用的详细信息。
-
谢谢。我用以下方法编辑了我的帖子:查询集仅从 UnionManager 类中的第一个模式返回对象(此处为“db1”)
标签: python django postgresql schema