示例情况如下:
# models.py
class Form(models.Model):
name = models.CharField()
class A(models.Model):
form = models.ForeignKey(Form)
class B(A):
name = models.CharField()
# view.py
form = Form.objects.get(id=1)
form.a_set.all() # works
form.b_set.all() # doesn't work
我想通过父类B
外键访问所有相关的A
对象,但我似乎无法做到这一点。如果我通过A
访问它们,那么我只获得通用父类查询集。谢谢。
答案 0 :(得分:4)
当您从具体模型继承时,Parent
和Child
模型将有两个表(与继承自抽象模型不同)。
Django将隐式地从名为parent_ptr
的OneToOneField
到Child
模型创建Parent
,因此:
B.objects.filter(a_ptr__form=form)
# B.objects.filter(a_ptr__form_id=1)
会为您提供所需的QuerySet
。