我试着做一个很长的连接,但是django似乎无法处理最后一层。是我搞错了还是有办法解决这个问题?在
在模型.py在
class A(models.Model):
object_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
class B(models.Model):
class_A_object = models.ForeignKey(A, on_delete=models.PROTECT)
value = models.CharField(max_length=50)
class C(models.Model):
class_B_object = models.ForeignKey(B, on_delete=models.PROTECT)
class D(models.Model):
value= models.IntegerField(primary_key=True)
class_C_object = models.ForeignKey(C, on_delete=models.PROTECT)
然后我试图选择类D中的值,当相关的类A对象名=ABC。在
^{pr2}$这失败了,从pycharm开始就拒绝自动完成它,如果我运行它,我会得到一个未定义名称的错误。在
但是,如果我掉一层就行了。在
D.objects.filter(class_C_object__class_B_object__value='ABC')
我没有发现任何文档提到最大连接数,但感觉这里有一个限制。在
有人知道如果是这样吗?如果是的话,最好的解决办法是什么?在
数据库在我的外部,无法修改。目前我唯一可行的解决方法是直接使用游标并手动编写sql。然而,由于很多原因,这并不理想。在
任何帮助都将不胜感激。在
谨致问候, 彼得
我已经解决了这个问题,也许不是最简单的解决方案,但是通过获得一个匹配名称ABC的queryset,然后使用该queryset作为a_uuin filter on D得到我想要的结果,它只执行一个查询。在
它可以工作,而且效率很高,但是代码不是很干净。如果有人有其他方法的建议,我会很高兴听到。在
谢谢, 彼得
相关问题 更多 >
编程相关推荐