2010年10月11日月曜日

Django appname_POST が存在しないというエラー

dJjangoで、appname_POST が存在しないというエラーが出る時がある。
(appnameは任意のアプリケーション名)。

appname_POST はDjangoのモデルで定義した構造を持ったDBテーブルだ。モデル定義中で、
class Meta:
  db_table = '任意の名前'
と定義すると指定した名前でDBテーブルが生成される。しかし指定しないと appname_POST という名前でDBテーブルが生成される。

python manage.py syncdb
を実行すると、DBにテーブルが生成されるが、appname_post は生成されない。ブラウザーでアプリケーション表示しようとすると、appname_POSTが存在しないというエラーが出る。
python manage.py reset appname
というコマンドもあり、実行するとテーブルがリセットされるとのことだが、実行すると setting.py にアプリケーションが登録されていないというエラーが出る。



この場合、次のように設定する。
  1. setting.py の INSTALLED_APPS に projname.appname を追加

    1. projnameはプロジェクト名。これを入れないと管理インターフェースでDB登録画面が表示されない。

    2. appnameだけの設定でも urls.py の urlspatterns に
      (r'^admin/', include(admin.site.urls)),
      
      でなく
      (r'^admin/(.*)', admin.site.root),
      
      と設定すると管理インターフェースのDB登録画面が表示される →古いバージョンの設定?


  2. リセットコマンドを実行
    python manage.py reset appname