簡體   English   中英

如何查詢集繼承模型django?

[英]How to queryset inheritance model django?

我有模特

class Parent(Model):
    pass

class Child1(Parent):
    att1 = CharField()

class Child2(Parent):
    att2 = CharField()

class Final(Model):
    parent = ForeignKey('Parent', related_name="final")

我需要查詢集

Final.objects.filter(parent__att1='abc')

但只是Child1繼承Parentatt1 如何查詢集ATT1Child1CHILD2?

您可以查詢:

Final.objects.filter(parent__child1__att1='abc')

在 Django 模型繼承(非抽象模型)是通過在子模型中添加一個隱式OneToOneField來實現的。 因此,我們可以通過反向查詢來使用該關系。

因此,這將創建一個如下所示的查詢:

SELECT final.*
FROM final
INNER JOIN parent ON final.parent_id = parent.id
INNER JOIN child1 ON parent.id = child1.parent_ptr_id
WHERE child1.att1 = 'abc'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM