django 多表连续外键关联问题,谢谢

我先说一下我遇到的问题,如下有四张表,每一张表是另一张表的外键。
四张表时,当我查D表,取A表name,取不出来,不是取不出来值,是用双下划线(__)不出deptname
但是当我用三张表同样操作时,就可以__出deptname。迷惑。。。。。。救。。。我。。。。

class A(models.Model):
    dept = models.CharField(primary_key=True)
    deptname = models.CharField(max_length=255)

    def __str__(self): return self.dept

    class Meta(): verbose_name_plural = 'A'

class B(models.Model):
    pgid = models.CharField(primary_key=True)
    pgname = models.CharField(max_length=255)
    fded = models.ForeignKey('A', on_delete=models.CASCADE)

    def __str__(self): return self.pgid

    class Meta(): verbose_name_plural = 'B'

class C(models.Model):
    pid = models.CharField(primary_key=True)
    pname = models.CharField(max_length=255)
    fpgd = models.ForeignKey('B', on_delete=models.CASCADE )

    def __str__(self): return self.pid

    class Meta(): verbose_name_plural = 'C'


class D(models.Model):
    psid = models.CharField( primary_key=True )
    psname = models.CharField(max_length=255)
    fpd = models.ForeignKey('C', on_delete=models.CASCADE )  

    def __str__(self): return self.psid 
    class Meta(): verbose_name_plural = 'D' 

 

当我想取D表A的deptname时,如下代码

result = D.objects.all()
deptname = result.values('fpd__fpgd__fded__deptname')

此处fpd__fpgd__fded里没有deptname,不可以写成fpd__fpgd__fded__deptname。

我试了将B或C表去掉一个再外键关联,就可以取到最后一张表里的name值。

(假如三张表外键关联,fpd__fpgd__deptname就有值可以取到。)

想问一下大神,外键连续关联后双下划线有次数限制吗?

我这个因为什么当四张表外键关联的时候不能取到name值,而三张表的时候就可以呢。迷惑......

(因为业务需要,必须要有三张主表分别放产品的三种属性,第四张表是产品登录的综合信息。)

完整代码?