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文を書いたとします。

このとき、SampleModel.objects.update_or_create はtest_typeという外部キーを持ち、SampleModel.objects.update_or_createのdefaultsに指定したtest_typeは外部キーのモデルだとします。

上記の場合update_or_createのupdateの場合うまくいくのですが、createだとうまくいきません。
なぜなら、test_typeに指定しているのはint型の数値ではなくモデルだからです。

上記の場合は下記のように直しましょう。

終わりに

今回はDjangoのupdate_or_createで「TypeError: int() argument must be a string, a bytes-like object or a number, not 〇〇(〇〇はモデル名)」のエラーが起きたときの原因と対処法について提案いたしました。

最後までお読みいただきありがとうございます。
ブログやTwitterでのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Django

Posted by ちこ