从外键字段获取模型实例ID而不加载对象

时间:2014-04-09 09:34:35

标签: python django foreign-keys models

假设我们有以下课程:

Class Alert(models.Model):
    contact = models.ForeignKey('emails.Contact',null=True,blank=True)

如果我想获得联系人的外键,我会做somealert.contact.pk或somealert.contact_id。这些命令是否下拉整个联系人对象然后获取密钥?或者他们中的任何一个只是产生外键而不从数据库中提取实例的属性。我担心性能,宁愿只拿钥匙。

1 个答案:

答案 0 :(得分:4)

第一个 - somealert.contact.pk - 将获取Contact对象。第二个 - somealert.contact_id - 赢了

您可以通过查看django.db.connection.queries

的内容在shell中验证这一点