cap*_*com 1 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
Run Code Online (Sandbox Code Playgroud)
我想B通过父类A外键访问所有相关对象,但我似乎无法做到这一点。如果我通过访问它们,A我只会获得通用父类查询集。谢谢。
当您从具体模型继承时,将有两个表(与从抽象模型继承不同)Parent和Child模型。
Django 将隐式创建一个名为 的OneToOneFieldfromChild到Parent模型parent_ptr,因此:
B.objects.filter(a_ptr__form=form)
# B.objects.filter(a_ptr__form_id=1)
Run Code Online (Sandbox Code Playgroud)
会给你想要的QuerySet。