[解決済み] Django: 整数値で外部キーを設定する?
質問
モデルの整数idを使用して外部キー関係を設定する方法はありますか? これは、最適化のためでしょう。
例えば、Employeeモデルを持っているとします。
class Employee(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
type = models.ForeignKey('EmployeeType')
と
EmployeeType(models.Model):
type = models.CharField(max_length=100)
従業員の種類を無制限にする柔軟性が欲しいのですが、デプロイされたアプリケーションではおそらく単一の種類しかないので、この方法で id をハードコードして関係を設定する方法があるかどうか疑問に思っています。 この方法では、最初に EmployeeType オブジェクトを取得するための db 呼び出しを避けることができます。
どのように解決するのですか?
はい。
employee = Employee(first_name="Name", last_name="Name")
employee.type_id = 4
employee.save()
ForeignKey
フィールドは、その値を属性に
_id
を持つ属性に値を格納し、 データベースにアクセスしないように直接アクセスすることができます。
は
_id
のバージョンは
ForeignKey
のバージョンは、Django の特に有用な側面であり、誰もが知っていて、適切なときに時々使うべきものです。
の注意点があります。 [ < Django 2.1 ]。
@RuneKaagaard は次のように指摘しています。
employee.type
を呼び出した後でも、最近の Django のバージョンでは正確ではありません。
employee.save()
を呼び出した後でも、正確ではありません (古い値を保持します)。これを使うと、もちろん上記の最適化の目的は達成されませんが、私は不正確であるより、偶然の余分なクエリの方がいいと思います。ですから、インスタンスでの作業が終了したときだけ、これを使うように注意してください (例えば
employee
).
ノート : 以下の @humcat さんの指摘の通り、このバグは Django 2.1
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
Djangoは、フォームを送信するときに403エラーに遭遇しました。CSRF 検証に失敗しました。
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] 外部キー制約のあるテーブルを切り捨てるには?
-
[解決済み] MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] Django REST Framework: ModelSerializerに追加フィールドを追加する
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
[解決済み] Django vs. Model View Controller [終了しました]。
-
[解決済み] request.GETでURLパラメータを取得する
-
[解決済み] Django テンプレート内で現在の URL を取得する方法は?
-
[解決済み] 保存時に、フィールドが変更されたかどうかを確認するにはどうすればよいですか?
-
[解決済み] Django の修正 管理者の複数形
-
[解決済み] Djangoのデータベースクエリ。id でオブジェクトを取得するには?
-
[解決済み] Djangoで異なる設定でUnitテストを行うには?
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?