Djangoのupdate_or_createでTypeError: int() argument must be a string, a bytes-like object or a number, not
今回はDjangoのupdate_or_createで「TypeError: int() argument must be a string, a bytes-like object or a number, not 〇〇(〇〇はモデル名)」のエラーが起きたときの原因と対処法について提案いたします。
Djangoのupdate_or_createでTypeError: int() argument must be a string, a bytes-like object or a number, not
例えば、次のようなupdate_or_create文を書いたとします。
1 2 3 4 5 6 |
SampleModel.objects.update_or_create( test_id=test_id, defaults={ 'test_type_id': test_type, }, ) |
このとき、SampleModel.objects.update_or_create はtest_typeという外部キーを持ち、SampleModel.objects.update_or_createのdefaultsに指定したtest_typeは外部キーのモデルだとします。
上記の場合update_or_createのupdateの場合うまくいくのですが、createだとうまくいきません。
なぜなら、test_typeに指定しているのはint型の数値ではなくモデルだからです。
上記の場合は下記のように直しましょう。
1 2 3 4 5 6 |
SampleModel.objects.update_or_create( test_id=test_id, defaults={ 'test_type_id': test_type.id, }, ) |
終わりに
今回はDjangoのupdate_or_createで「TypeError: int() argument must be a string, a bytes-like object or a number, not 〇〇(〇〇はモデル名)」のエラーが起きたときの原因と対処法について提案いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません