Django 模型继承:父级上的外键,无法 related_name 访问子模型

Django model inheritance: ForeignKey on parent, no related_name access to child model

示例情况如下:

# 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

我想通过父 class A 外键访问所有相关的 B 对象,但我似乎无法这样做。如果我通过 A 访问它们,那么我只会得到通用父 class 查询集。谢谢。

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

Django 将隐式创建一个从 ChildParentOneToOneField 模型,命名为 parent_ptr,因此:

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

会给你想要的 QuerySet.