django-polymorphic 按子类型过滤

标签 django polymorphism django-polymorphic

我有如下模型结构:

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

class Group(PolymorphicModel):
    pass

class SpecialGroup(Group):
    pass

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

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

提前致谢,
干杯!

最佳答案

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

from django.contrib.contenttypes.models import ContentType

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

关于django-polymorphic 按子类型过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22675596/

相关文章:

python - 安装Django 1.9导致的pip错误

polymorphism - 查找归纳定义类型的(显示)实现

haskell - 什么是单态性限制?

Django 电子邮件主题 "EMAIL_SUBJECT_PREFIX"被忽略

Django 的 HttpResponseRedirect 似乎剥离了我的子域?

python - 在 Django 中按 id 过滤多个数据

C#:有什么方法可以跳过多态性中的一个基本调用?

python - 如何从多对多表中检索字段?

python - 使用 ABC、PolymorphicModel、django-models 给出元类冲突

python - Django 多态树 list_display 内容字段中的对象名称