的Django模型继承:在父ForeignKey的,没有related_name获得子模型

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

如果您从一个具体模型继承,那么ParentChild模型将会有两个表(不同于继承自抽象模型)。 Django会隐式创建一个ChildOneToOneField名为parent_ptrParent模型,即:

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

会给你想要的QuerySet