Django select_related没有检索子类模型

时间:2012-02-23 06:01:26

标签: django

我有四种模式:

Task(models.Model):
    fields...
BasicImage(models.Model):
    task = models.ForeignKey(Task)
    fields...

VisImage(BasicImage):
    fields...

IRImage(BasicImage):
    fields...

稍后我有代码执行以下操作:

task = Task.objects.get()
basicimages = task.basicimage_set.select_related().all()
imageset1 = basicimages.filter(filter=1)
imageset2 = basicimages.filter(filter=2)

在模板中,我最终会显示如下信息:

{% for i in imageset1 %}
    {{ i.visimage.field }}
{% endfor %}

{% for i in imageset2 %}
    {{ i.irimage.field %}
{% endfor %}

然而,根据Django Debug工具栏(以及明显的延迟),Django仍在为每个.visimage和.irimage对象进行重新查询。为什么select_related没有处理这个?

1 个答案:

答案 0 :(得分:1)

模型继承在子类模型上添加隐式的一对一字段。据我所知,select_related不适用于反向关系。