的Django模型继承:在父ForeignKey的,没有related_name获得子模型
问题描述:
例情况如下:的Django模型继承:在父ForeignKey的,没有related_name获得子模型
# 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
我想通过父类A
外键来访问所有相关B
对象,但我可以”似乎这样做。如果我通过A
访问它们,那么我只是得到通用父类查询集。谢谢。
答
如果您从一个具体模型继承,那么Parent
和Child
模型将会有两个表(不同于继承自抽象模型)。 Django会隐式创建一个Child
到OneToOneField
名为parent_ptr
Parent
模型,即:
B.objects.filter(a_ptr__form=form)
# B.objects.filter(a_ptr__form_id=1)
会给你想要的QuerySet
。