【发布时间】:2018-06-04 02:06:31
【问题描述】:
我正在尝试进行很长的连接,但 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)
然后,当相关的 A 类对象名称 = ABC 时,我尝试选择 D 类中的值。
D.objects.filter(class_C_object__class_B_object__class_A_object__name='ABC')
这失败了,从 pycharm 开始拒绝自动完成它,如果我运行它,我得到一个名称未定义的错误。
但是,如果我放下一层,它就可以工作。
D.objects.filter(class_C_object__class_B_object__value='ABC')
我没有找到任何提及最大连接数的文档,但感觉这里有一个限制。
有谁知道是不是这样,如果是这样,解决这个问题的最佳方法是什么?
数据库对我来说是外部的,无法修改。我目前唯一可行的解决方法是直接使用光标并手动编写sql。但是,由于很多原因,这并不理想。
任何帮助将不胜感激。
亲切的问候, 彼得
【问题讨论】:
-
发布您的确切错误回溯