Django ValueError:Can';t使用不同数据库上的查询执行子查询 我认为:
在具有(默认数据库为sqlite3)的dev服务器上,该视图工作正常,但在生产服务器Django上运行正常 异常值:无法对不同数据库上的查询执行子查询。 请帮忙 添加: models.pyDjango 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
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