哪个更好? city.state.id或city.state_id

时间:2016-11-23 14:52:55

标签: django

我必须表达关系。

国家

  • ID
  • 名称

  • ID
  • 名称
  • 状态

哪种表现更好?

city.state.idcity.state_id

3 个答案:

答案 0 :(得分:3)

无论如何,

city.state_id会更好。 city.state将从数据库执行另一次提取。您可以使用select_related来避免这种情况。如果您只需id个foriegn密钥,则此处不需要select_related。只需city.state_id 1}}(因为foriegn key id将在提供city对象的查询中获取。)

答案 1 :(得分:1)

city.state_id优于city.state.id。因为它只是一个查询而不是两个。

BTW,您可以使用Django Debug Toolbar来调试查询。

答案 2 :(得分:1)

您看到的<field>_id字段是数据库列名称

docs

  

在幕后,Django将“_id”附加到字段名称以创建其数据库列名称。在上面的示例中,Car模型的数据库表将具有manufacturer_id列

所以这意味着它不需要单独的查询来检索外键实例(有关详细信息,请参阅Select a single field from a foreign key)。

但这假设您没有使用select_relatedprefetch_related