Django ValueError:不能对不同DB上的查询进行子查询

时间:2015-08-10 05:37:18

标签: django

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'default_db',
'USER': 'user',
    'PASSWORD': '123123123',
    'HOST': 'localhost',
'PORT': '',
},
'omskgkh': {
    'NAME': 'general',
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'USER': 'user',
    'PASSWORD': '123123123',
    'HOST': '123.123.123.123',
    'PORT': '',
}}
我认为

def districtreport(request):

info = models.InfoAddress.objects.using('general')
kao = info.filter(okrug='КАО').values('home')

kao_accounts = models.Operation.objects.using('general').filter(account_id__home_id=kao)

在dev服务器上(默认数据库是sqlite3),该视图工作正常,但在生产服务器上Django提升

异常值:不能对不同数据库的查询进行子查询。

请帮助。

添加: models.py

class Home(models.Model):
  id = models.IntegerField(primary_key=True)
  ...

  class Meta:
      db_table = "home"
      managed = False


class InfoAddress(models.Model):
    id = models.IntegerField(primary_key=True)
    home = models.ForeignKey(Home)
    okrug = models.CharField(max_length=255)
    ...

class Meta:
    db_table = "infoaddress"
    managed = False


class Account(models.Model):
    id = models.IntegerField(primary_key=True)
    home = models.ForeignKey(Home)
    ...

class Meta:
    db_table = "account"
    managed = False


class Operation(models.Model):
    id = models.IntegerField(primary_key=True)
    account = models.ForeignKey(Account)
    ...

class Meta:
    db_table = "account_op"
    managed = False

3 个答案:

答案 0 :(得分:1)

我找到了一种解决问题的方法: 将QuerySet更改为列表并使用它进行过滤。

答案 1 :(得分:0)

更新到cacheops 2.4.1或更高版本将解决它。

现在已修复corresponding issue

答案 2 :(得分:-1)

问题是由'cacheops'应用引起的。由作者修正。