ゴミ Category を消す のは実施できましたので、
今度はゴミの Keyword が消せるのか試してみました。


0. 前提

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

  • OS
    CentOS release 6.7 (Final)

  • Python Version
    Python 2.7.8

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


1. 参考

以下が参考になりました。
Keyword を消すための Admin は提供されておらず、管理画面上から変更できるようにするには、
自前で実装する必要があるようです。


2.管理メニューにキーワード編集を追加する

2-1. admin.py の記載先となる application を作成する。

mezzanine-project myprojectプロジェクトを作成すると、
プロジェクトと同名のテンプレートディレクトリできますが、
ここに admin.py置いても認識されませんでしたので、
admin.py の置き場所とする application を作成します。

cd {mezzanine_project_root}
python2.7 manage.py startapp mezzanine_extentions


2-2. setting.py に mezzanine_extentions を追加

INSTALLED_APPS = (
    "mezzanine_extentions",       
    ...
}


2-3. admin.py を編集

以下の内容にしました。

  • admin.py

from django.contrib import admin
from mezzanine.generic.models import Keyword

# Register your models here.
class KeywordAdmin(admin.ModelAdmin):
    list_display = ('id', 'site', 'title', 'slug')
    list_filter = ('site',)
    search_fields = ('slug',)
admin.site.register(Keyword, KeywordAdmin)

2-4. settings.py の ADMIN_MENU_ORDER に generic.Keyword追加する

ADMIN_MENU_ORDER generic.Keyword追加します。

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

HTTP サーバを再起動すると以下の通り、キーワード編集ができるようになります。
Keyword Admin


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

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

  • django shell を起動
    python manage.py shell
    
    from mezzanine.generic.models import Keyword
    k = Keyword.objects.get(title='<keyword>')
    k.delete()
    

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

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

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

5. 補足 権限割り当て

コメントも同様だったのですが、
ユーザーに、編集権限を割り当てないと、ADMINメニューに表示されません。
管理者以外のユーザーが編集を行う場合は、権限の割り当てが必要になります。

User Role

Category とほぼほぼ同じような内容になりました。
以上です。

コメント