python - 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


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

最佳答案

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

Django将隐式创建一个从OneToOneFieldChild名为Parent的模型的parent_ptr,因此:

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


将为您提供所需的QuerySet

本文翻译自 https://stackoverflow.com/questions/41653525/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 python django django-models django-inheritance


相关文章:

python - 用熊猫将每个单词的前N个字符连接在一起

python - 在Python中计算多项式?

python - Django用户身份验证和呈现由该特定用户创建的内容?

python - Django / Python:如何将整数转换为等效的枚举字符串? [重复]

python - 自定义适配器和django-allauth的问题

python - Python-ValueError:符号必须是值为0或1的整数

python - 如何在Py2app(或Py2exe)程序中直接访问资源?

python - 在Django Rest Framework中搜索多个模型的表

python - Django中的虚拟过滤器

python - Django 1.8 OperationalError:没有这样的列: