django-polymorphic按子类型过滤

luk*_*nko 0 django polymorphism django-polymorphic

我有如下模型结构:

class MyObject(PolymorphicModel):
    group = models.ForeignKey(Group)

class Group(PolymorphicModel):
    pass

class SpecialGroup(Group):
    pass
Run Code Online (Sandbox Code Playgroud)

现在,我想选择所有MyObjects,哪个组是SpecialGroup类型.

是否可以使用QuerySet API实现它,而无需运行原始SQL?我想出的唯一可行解决方案是使用.extra()运行额外的"select"SQL查询.

提前谢谢,干杯!

knb*_*nbk 7

在内部,django_polymorphic使用Django的ContentType框架来确定每个模型使用的实际类.

from django.contrib.contenttypes.models import ContentType

MyObject.objects.filter(group__polymorphic_ctype=ContentType.objects.get_for_model(SpecialGroup))
Run Code Online (Sandbox Code Playgroud)