我必须表达关系。
哪种表现更好?
city.state.id
或city.state_id
答案 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
字段是数据库列名称
在幕后,Django将“_id”附加到字段名称以创建其数据库列名称。在上面的示例中,Car模型的数据库表将具有manufacturer_id列
所以这意味着它不需要单独的查询来检索外键实例(有关详细信息,请参阅Select a single field from a foreign key)。
但这假设您没有使用select_related
或prefetch_related