ほんじゃら堂

めんどくさい仕事をラクにする作業自動化レシピ集

django開発版で発生した問題を解決する

久々にdjangoを最新版にアップデートしたら下記の問題が発生した。

  1. ページを開く時にadmin関連のエラーが出るようになった。
  2. models.pyに定義したverdjnlibのPhotoFieldが動作しなくなった。

ページを開く時にadmin関連のエラーが出るようになった

url.pyでadminサイトを呼び出す方法が変わったらしい。


下記URLの後方互換性のない機能の一覧に記載されていた。こんなページがあったとは初めて知ったわ。
http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Mergednewforms-adminintotrunk

models.pyに定義したverdjnlibのPhotoFieldが動作しなくなった。

今のところ2つ問題が発生するのを確認した。

  1. checkboxfieldは存在しないというエラーが発生する。
  2. PhotoField定義した列がsyncdbした時にDBに反映されなくなった
checkboxfieldは存在しないというエラーが発生する

こちらは、newformsがformsに統合されたため、formsの中にcheckboxfieldが存在しなくなったのが原因だった。
verdjnlib/fields/deletecheckbox.pyの1行目を下記のように変更したら直った。

from django.oldforms import CheckboxField
# django.formsをdjango.oldformsに変更
PhotoField定義した列がsyncdbした時にDBに反映されなくなった

これが原因が分からず、苦労した。どうやらImageFieldとFileFieldの
構成が変わったのが原因らしい。
とりあえず、下記の箇所を変更したら反映されるようになった。

verdjnlib/fields/photofield.py(37行目付近)

    def get_internal_type(self):
return 'FileField' # return 'ImageField'から変更