diadia

興味があることをやってみる。自分のメモを残しておきます。

pythonのgetとdjangoのgetは異なる

pythonのgetとdjangoのgetは異なるので注意

よく使われるgetにdjangopythonで別物だと気づいたのでメモしておく。

とりあえずドキュメントをそれぞれ置いておく。

get() を用いて1つのオブジェクトを取得する

https://docs.python.jp/3/library/stdtypes.html#dict.get

簡単に違いを説明すると、自分が慣れ親しんだdjangoのManagerのget()メソッドは、getの対象が一つに絞れないとき、または対象が存在しないときにはエラーが返されます。

一方pythonのget()も辞書型データのメソッドだけれども、getの対象が存在しないときにはエラーは返されない。返されるのはNoneか自分で設定したもの。メソッドgetはManagerか辞書型データかによって異なる。思い返してみればManagerを使うとdict型のようなものが返される、といった表現をdjangoドキュメントで読んだ記憶がある。これは辞書型と言い切ってしまうと、Managerのメソッドではなくなってしまう問題を回避するためだと納得した。

クエリセットやデータオブジェクトをいじる際にNoneが返されたり、デフォルトの値が出て来るような状況だとデータはごちゃごちゃになってしまうから。
うまくできているなあと思う。