我从现有的数据库构建Django应用程序。无论更好还是更糟糕,我都有一些意见,我想基于我的模型。他们看起来像这样:Django在视图上的外键
class Device(Model):
id = models.IntegerField(primary_key=True, db_column='node_id')
name = models.CharField(max_length=127, db_column='node')
class Meta:
db_table = 'node' # db view
managed = False
class Entity(Model):
id = models.IntegerField(primary_key=True, db_column='_id')
device = models.ForeignKey(Device, db_column='node_id')
class Meta:
db_table = 'entity' # db view
managed = Fase
所以事情工作还行。然而,当我尝试使用利用ForeignKey的是很慢的一个模板:
{% for e in entities %}
{{ e.device.name }}
{% endfor %}
看日志,这似乎是重复查询每个“NODE_ID”,并最终超时了。
(当然,如果我不包括e.device.name
是所有快)
有没有办法可以优化呢?
为了公平起见,'实体'视图已经将设备的名称作为另一个字段(node
),所以我可以用它来代替,但我希望关系存在。
尝试更改** db_column ='node_id'**到** db_column ='id'**。我不确定,但是可以从** db_table **元选项 – 2011-06-01 21:36:39
推断出** node _ **前缀,底层实体视图实际上具有对节点的id引用作为'node_id';所以把'ID'实际上失败与'“未知列'entity.id'在'字段列表''' – yee379 2011-06-01 23:59:40