Mezzanine 間違って登録した Category を消してみる


Mezzanine REST API を使ってみる | Monotalk
の動作確認中に、ゴミカテゴリを幾つか登録したのですが、
画面上から削除することができず、削除方法を調べたので、
調べた結果を記載します。


0. 前提

以下の環境で実行しています。

  • OS
    CentOS release 6.7 (Final)

  • Python Version
    Python 2.7.8

  • Package (必要そうなものだけ抜粋)
    Django (1.10)
    Mezzanine (4.2.0)


1. 参考

以下、メーリングリストでの Q&A が参考になりました。
ADMIN メニューに追加する。
もしくは、python manage.py shell で対象カテゴリを削除するような形になるようです。


2. ADMIN メニューに追加する

settings.py の ADMIN_MENU_ORDERblog.BlogCategory を追加すると、
ADMIN メニューに表示されるようなので、試してみます。
初期状態だと、ADMIN_MENU_ORDER はコメントアウトされています。

Configuration — Mezzanine 4.2.2 documentation
を見る限りデフォルトだと、設定値は以下、値になっています。1
[1] 私の初期インストールした Version の関係か、コメントアウトされた設定は、デフォルト設定と異なりました。最新をインストールしてプロジェクトを作成すれば、コメントアウト部はデフォルト設定が記載されているかと思います。

ADMIN_MENU_ORDER= (
    ('Content', ('pages.Page', 'blog.BlogPost', 'generic.ThreadedComment', ('Media Library', 'media-library'))), 
    ('Site', ('sites.Site', 'redirects.Redirect', 'conf.Setting')),
    ('Users', ('auth.User', 'auth.Group')),
)

この設定に、blog.BlogCategory を追加します。

ADMIN_MENU_ORDER= (
    ('Content', ('pages.Page', 'blog.BlogPost', 'blog.BlogCategory', 'generic.ThreadedComment', ('Media Library', 'media-library'))), 
    ('Site', ('sites.Site', 'redirects.Redirect', 'conf.Setting')),
    ('Users', ('auth.User', 'auth.Group')),
)

HTTPサーバーを再起動して、管理画面にログインすると、
ブログカテゴリーの編集ができるようになります。
Category Admin


3. python manage.py shell から削除する

画面から消せるようになったので、あまり使用しないかもしれないですが、
console から、以下のようにカテゴリを削除することができます。

  • django shell を起動
    python manage.py shell
    
    from mezzanine.blog.models import BlogCategory
    c = BlogCategory.objects.get(title='<category_title>')
    c.delete()
    

4. python manage.py dbshell から削除する

更にもっと、使用しないかもしれませんが、 SQL では以下の通り、削除が可能です。

  • django dbshell を起動
    python manage.py dbshell
    
    DELETE FROM blog_blogcategory WHERE title = '<category_title>';
    

ADMINメニューから削除できるようにしておけばよいですかね。
そもそも間違って登録自体あまり発生しないので、使用頻度は少ないかもしれません。
以上です。

コメント

カテゴリー