2016年8月1日にDjango 1.10がリリースされました。このバージョンにアップデートしたところ、3点ほどはまったことがあったので忘備録として残しておきます。
タグ: Django
PythonPythondjangoのモデルを保存する際に特定のカラムを除外できるようにする方法
djangoのモデルはsaveメソッドを使ってDBに保存できます。その際に特定のカラムのみを更新したい場合、saveメソッドのupdate_fieldsで指定できます。
ただ少なくともdjangoのバージョン1.9.7では 特定のカラム以外を更新する という方法は見当たらなかったので、mixinを作成してみました。作成したmixinを使用するとsave(exclude_fields=['name1', 'name2'])
の様に更新対象外とするカラムを指定することができるようになります。
[django、TransactionTestCase]別スレッドを起動しているアプリの注意点
リクエストのタイムアウトの関係上、重い処理をdjangoのviewで走らせたい場合、予約して後程バッチ処理で実行したり、別スレッドを立ち上げて実行することがあるかと思います。ただ、別スレッドを立ち上げるビューのテストケースを書いたときに、TestCase(django.test.TestCase)を継承したテストケースだと期待したテスト結果を得られないことがありました。
この投稿ではビューから別スレッドを立ち上げた場合に、TestCase(django.test.TestCase)を継承したテストケースで起こり得る問題と、その解決方法を紹介します。
今回使ったdjangoのバージョンは1.8.3です。また、djangoのアプリが接続するDBはMySQLを使っています。