私はリレーションでテーブルを作成する必要があります。どちらが良いですか? city.state.idまたはcity.state_id
州
- ID
- 名
市
- ID
- 名
- 状態
どちらが優れていますか?
city.state.id
またはcity.state_id
私はリレーションでテーブルを作成する必要があります。どちらが良いですか? city.state.idまたはcity.state_id
どちらが優れていますか?
city.state.id
またはcity.state_id
city.state_id
とにかく優れているを使用していない前提としています。 city.state
はデータベースから別のフェッチを行います。select_related
を使用するとこれを避けることができます。 forifgnキーだけが必要な場合は、select_related
ここをクリックしてください。city.state_id
(city
オブジェクトを与えるクエリではforiegnキーIDが取得されます。
city.state_id
city.state.id
よりも優れています。なぜなら、2つではなくクエリだけを作成するからです。
ところで、Django Debug Toolbarを使用すると、クエリをデバッグできます。あなたが見る
<field>_id
フィールドは、データベースのカラム名舞台裏
で、Djangoはそのデータベースのカラム名を作成するには、フィールド名に「_id」を追加します。上記の例では、車のモデルのためのデータベーステーブルがMANUFACTURER_ID列
を持っていますので、これはそれが(詳細はSelect a single field from a foreign keyを参照してください)外部キーのインスタンスを取得するために別のクエリを作成する必要がないことを意味します。
しかし、これはあなたがselect_related
またはprefetch_related
ベンチマークを試しましたか?前に状態にアクセスしましたか? – Sayse
@Sayseいいえ。私はどのようにベンチマークを作ることができるのか分からない!状態にアクセスしていません! – Chalist