django-polymorphic按子类型过滤 [英] django-polymorphic Filter by child type
本文介绍了django-polymorphic按子类型过滤的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的模型结构如下:
class MyObject(PolymorphicModel):
group = models.ForeignKey(Group)
class Group(PolymorphicModel):
pass
class SpecialGroup(Group):
pass
现在,我想选择所有MyObjects,该组的类型为SpecialGroup.
Now, I would like to select all MyObjects, which group is of type SpecialGroup.
是否可以在不运行原始SQL的情况下使用QuerySet API实现它? 我想到的唯一可行的解决方案是使用.extra()运行附加的选择" SQL查询.
Is it possible to achieve it with QuerySet API, without running raw SQL? The only working solution I came up with was by running additional 'select' SQL query using .extra().
预先感谢, 干杯!
推荐答案
在内部,django_polymorphic使用Django的ContentType框架来确定用于每个模型的实际类.
Internally, django_polymorphic uses Django's ContentType framework to determine the actual class used for each model.
from django.contrib.contenttypes.models import ContentType
MyObject.objects.filter(group__polymorphic_ctype=ContentType.objects.get_for_model(SpecialGroup))
这篇关于django-polymorphic按子类型过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文