Django ValueError:Can';t使用不同数据库上的查询执行子查询 我认为:

Django ValueError:Can';t使用不同数据库上的查询执行子查询 我认为:,django,Django,在具有(默认数据库为sqlite3)的dev服务器上,该视图工作正常,但在生产服务器Django上运行正常 异常值:无法对不同数据库上的查询执行子查询。 请帮忙 添加: models.py def districtreport(request): info = models.InfoAddress.objects.using('general') kao = info.filter(okrug='КАО').values('home') kao_accounts = models.Opera

在具有(默认数据库为sqlite3)的dev服务器上,该视图工作正常,但在生产服务器Django上运行正常

异常值:无法对不同数据库上的查询执行子查询。

请帮忙

添加: models.py

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)

问题是由“cacheops”应用程序引起的。由作者修复。

我找到了一种解决问题的方法:
将QuerySet更改为list并使用它进行筛选。

更新到cacheops 2.4.1或更高版本将修复此问题


A现在已修复。

您可以包含您的
模型.py吗?
?对于QuerySet对象来说,这是一条非常严格的规则。如果要根据另一个查询集的结果筛选查询集,则需要为两个查询集显式使用其中一个数据库。我找不到一个动态的方法来解决这个问题,我在两个操作中都使用了1个数据库。(使用('general'))无法使用最新的cacheops进行复制。尝试更新它。如果这没有帮助,请发布完整的StActTrink,也考虑在这里发布一个bug报告-你用Python 2尝试了吗?更新是答案。没有其他合理的方法来解决这个问题。这不是“为什么”的问题,而是“如何”的问题。这就是答案。
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)
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