有示例代码:
模型:
class A(models.Model):
any attr_A
....
class B(A):
any attr_B
....
class C(models.Model):
a = models.ManyToManyField(A)
的观点:
c = C()
b = B()
c.a.add(b) - add B class instance
c.save()
...
a = c.a.all()
a[0].attr_B
但是“a”列表包含A类实例,我无法获取B类的属性。
我如何获得B类属性?
答案 0 :(得分:0)
A和B之间没有关系,它只是继承。它应该是:
class A(models.Model):
any attr_A
....
class B(A):
any attr_B
....
class C(models.Model):
a = models.ManyToManyField(B)
即使它是一种关系,也应该是这样的:
class A(models.Model):
any attr_A
....
class B(models.Model):
a = models.ForeignKey(A)
any attr_B
....
class C(models.Model):
a = models.ManyToManyField(A)
然后:
a[0].b.attr_B
答案 1 :(得分:0)
检查the doc,访问多表继承中的子类实例,使用a[0].b
实例,B()
实例,其上有attr_B
个,如果a[0]
是模型A
的实例
因此a[0].b.attr_B
在这里工作。