1

示例情况如下:

# 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我只会得到通用的父类查询集。谢谢你。

4

1 回答 1

4

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

Django 将隐式创建一个OneToOneFieldfrom ChildtoParent模型命名parent_ptr,因此:

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

会给你想要的QuerySet

于 2017-01-14T18:48:10.220 回答