Django模型继承:ParentK上的ForeignKey,没有related_name访问子模型

时间:2017-01-14 18:33:19

标签: python django django-models django-inheritance

示例情况如下:

# 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访问它们,那么我只获得通用父类查询集。谢谢。

1 个答案:

答案 0 :(得分:4)

当您从具体模型继承时,ParentChild模型将有两个表(与继承自抽象模型不同)。

Django将隐式地从名为parent_ptrOneToOneFieldChild模型创建Parent,因此:

B.objects.filter(a_ptr__form=form)
# B.objects.filter(a_ptr__form_id=1)

会为您提供所需的QuerySet