2014-03-26 53 views
0

過濾器我有模型結構如下圖所示:Django的多態由子類型

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

class Group(PolymorphicModel): 
    pass 

class SpecialGroup(Group): 
    pass 

現在,我想選擇所有MyObjects,這組屬於SpecialGroup的。

是否可以使用QuerySet API實現它,而無需運行原始SQL? 我想出的唯一工作解決方案是使用.extra()運行額外的'select'SQL查詢。

在此先感謝, 乾杯!

回答

4

在內部,django_polymorphic使用Django的ContentType框架來確定每個模型使用的實際類。

from django.contrib.contenttypes.models import ContentType 

MyObject.objects.filter(group__polymorphic_ctype=ContentType.objects.get_for_model(SpecialGroup))