TypeError: __init__() missing 1 required positional argument: 'on_delete' Solution
2022-02-18 17:44:11
Django で Model を作成すると、次のようなエラーが発生します。
TypeError: イニット () 1つの必須位置引数がありません: 'on_delete'
コードは次のようになります。
from django.db import models
# Create your models here.
class Contract(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=120)
DecimalField(max_digits=9, decimal_places=2, default=0)
class Project(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=120)
DecimalField(max_digits=9, decimal_places=2, default=0)
# Create a one-to-many relationship with Contract
contract = models.ForeignKey(Contract)
pythonを実行する場合 manage.py makemigrationsでエラーが発生しました。TypeError: init () 1つの必須位置引数がありません: 'on_delete'
解決策
外部キーを定義する際に、on_delete=を追加する必要があります。
ということです。
contract = models.ForeignKey(Contract, on_delete=models.CASCADE)
その理由は以下の通りです。
django が 2.0 にアップグレードした後、テーブル同士を関連付ける場合、 on_delete パラメータを記述しなければならず、そうしないと例外が報告されます。
TypeError: init() missing 1 required positional argument: 'on_delete'.
on_deleteの各引数の意味は以下の通りです。
on_delete=None, # the behavior of the current table and its associated field when deleting data from the associated table
on_delete=models.CASCADE, # Deletes the associated data, and the associated field is also deleted
on_delete=models.DO_NOTHING, # Delete the associated data and do nothing
on_delete=models.PROTECT, # Delete the associated data, raising the error ProtectedError
# models.ForeignKey('associated table', on_delete=models.SET_NULL, blank=True, null=True)
SET_NULL, # delete the associated data, the value associated with it is set to null (the premise that the FK field needs to be set to null, the same for one-to-one)
# models.ForeignKey('associated table', on_delete=models.SET_DEFAULT, default='default')
on_delete=models.SET_DEFAULT, # delete the associated data, the value associated with it is set to the default value (provided the FK field needs to be set to the default value, the same for one-to-one)
on_delete=models,
a. The value associated with it is set to the specified value, set: models.SET(value)
b. The value associated with it is set to the return value of the executable object, set: models.SET(executable)
ManyToManyField には on_delete パラメータがないので、上記は ForeignKey と OneToOneField のみになります。
以上、以下の記事の著者の方々に感謝しつつ、学習過程で遭遇した問題を記録してみました。
<ブロッククオート
https://www.cnblogs.com/phyger/p/8035253.html
https://blog.csdn.net/buxianghejiu/article/details/79086011
お気軽に添削していただき、一緒に勉強しましょう :)
関連
-
[解決済み】SQLALCHEMY_TRACK_MODIFICATIONSを無効にする方法は?
-
[解決済み] Pythonで高速Pingスイープ
-
[解決済み] ループの難しさ
-
[解決済み] Random モジュールが動作しない。ValueError: randrange() の範囲が空です (1,1, 0)
-
[解決済み] ImportError: externという名前のモジュールがない
-
[解決済み] 不規則なリストの中で最も長いリストの長さを求める
-
[解決済み] Flaskでチェックボックスの値を取得する
-
[解決済み] float が配列に格納されている任意の float に近いかどうかをチェックします。
-
Python がループの外側で 'break' を報告する理由
-
AttributeError: モジュール 'matplotlib' には 'pyplot' という属性がありません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】 str.containsでNaNを無視する。
-
[解決済み】python object() takes no parameters エラー 【終了しました。
-
[解決済み】Pythonが'list'オブジェクトをstrに変換できないエラー [終了しました]
-
[解決済み] OSError: Pandas の csv でファイルからの初期化に失敗しました。
-
[解決済み] Pythonのパッチとは何ですか?
-
[解決済み] インポートエラー:paho.mqtt.clientが見つかりません。
-
[解決済み] ipythonを終了する
-
[解決済み] Pythonエラー "import: unable to open X server".
-
[解決済み] Python 3 で MP3 を読み込む