Django で model をたくさん作った後に、いざadmin.py を編集しようとして、
数が多すぎて、面倒くさいと思い、これ何かdjnago-extentions あたりに、
それっぽいコマンドがあるか見てみたところ、
admin_generator
というコマンドがあり、こいつを使ってみた結果を記載します。
使用しているDjango Version
使用Version は 1.10 です。
pip list
----------------------------
Django (1.10)
----------------------------
admin_generator の実行結果
-
まず、コマンドの一覧を出力
python3 manage.py ----------------------------- [django_extensions] admin_generator clean_pyc clear_cache compile_pyc create_app create_command create_jobs create_template_tags describe_form drop_test_database dumpscript export_emails find_template generate_secret_key graph_models mail_debug notes passwd pipchecker print_settings print_user_for_session reset_db runjob runjobs runprofileserver runscript runserver_plus set_default_site set_fake_emails set_fake_passwords shell_plus show_template_tags show_templatetags show_urls sqlcreate sqldiff sqldsn sync_s3 syncdata unreferenced_files update_permissions validate_templates -----------------------------
-
Application 指定でadmin.py を生成する
標準出力にfestivals配下の全てのModelクラスのAdminが記載されたpython3 manage.py admin_generator festivals
pythonファイルが出力されます。
※結果は一部抜粋しています。
# -*- coding: utf-8 -*- from django.contrib import admin from .models import ContactMailTaskManage class ContactMailTaskManageAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'email', 'subject', 'message', 'mail_send') list_filter = ('mail_send',) search_fields = ('name',) admin.site.register(ContactMailTaskManage, ContactMailTaskManageAdmin)
-
model 指定(1つ)で、admin.pyを出力する
指定したModelクラスのAdminが記載されたpythonファイルが出力されます。python3 manage.py admin_generator festivals4partypeople EchonestArtistTaskManage
# -*- coding: utf-8 -*- from django.contrib import admin from .models import EchonestArtistTaskManage class EchonestArtistTaskManageAdmin(admin.ModelAdmin): list_display = ( 'id', 'echonest_artist', 'store_eartist_detail_task_update_date', 'store_esong_task_update_date', 'store_eimage_task_update_date', 'store_sctrack_task_update_date', 'store_mcartist_task_update_date', 'store_evideo_task_update_date', 'store_ebiography_task_update_date', 'store_eblog_task_update_date', 'create_date', 'update_date', ) list_filter = ( 'store_eartist_detail_task_update_date', 'store_esong_task_update_date', 'store_eimage_task_update_date', 'store_sctrack_task_update_date', 'store_mcartist_task_update_date', 'store_evideo_task_update_date', 'store_ebiography_task_update_date', 'store_eblog_task_update_date', 'create_date', 'update_date', ) raw_id_fields = ('echonest_artist',) admin.site.register(EchonestArtistTaskManage, EchonestArtistTaskManageAdmin)
-
model 指定(複数)で、admin.pyを出力する
python3 manage.py admin_generator festivals4partypeople EchonestArtistTaskManage Genre
Genreは外部キーで他のエンティティと関係があるため、それも出力されています。
# -*- coding: utf-8 -*-
from django.contrib import admin
from .models import Genre, EchonestArtistTaskManage, GenreFestivalRelation
class GenreAdmin(admin.ModelAdmin):
list_display = (
'id',
'genre_name',
'description',
'create_date',
'update_date',
)
list_filter = ('create_date', 'update_date')
admin.site.register(Genre, GenreAdmin)
class EchonestArtistTaskManageAdmin(admin.ModelAdmin):
list_display = (
'id',
'echonest_artist',
'store_eartist_detail_task_update_date',
'store_esong_task_update_date',
'store_eimage_task_update_date',
'store_sctrack_task_update_date',
'store_mcartist_task_update_date',
'store_evideo_task_update_date',
'store_ebiography_task_update_date',
'store_eblog_task_update_date',
'create_date',
'update_date',
)
list_filter = (
'store_eartist_detail_task_update_date',
'store_esong_task_update_date',
'store_eimage_task_update_date',
'store_sctrack_task_update_date',
'store_mcartist_task_update_date',
'store_evideo_task_update_date',
'store_ebiography_task_update_date',
'store_eblog_task_update_date',
'create_date',
'update_date',
)
raw_id_fields = ('echonest_artist',)
admin.site.register(EchonestArtistTaskManage, EchonestArtistTaskManageAdmin)
class GenreFestivalRelationAdmin(admin.ModelAdmin):
list_display = ('id', 'genre', 'festival', 'create_date', 'update_date')
list_filter = ('genre', 'festival', 'create_date', 'update_date')
admin.site.register(GenreFestivalRelation, GenreFestivalRelationAdmin)
- HELP出力
実際は、詳細説明が出力されるため、もっと長いです。
DATE_HIERARCHY
、PREPOPULATED_FIELDS
、SEARCH_FIELD
等、
指定できるoptionがあります。
※作り込みしない限りはデフォルトで問題ないかと思います。
python3 manage.py admin_generator -h ----------------------------- usage: manage.py admin_generator [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS] [--pythonpath PYTHONPATH] [--traceback] [--no-color] [-s SEARCH_FIELD] [-d DATE_HIERARCHY] [-p PREPOPULATED_FIELDS] [-l LIST_FILTER_THRESHOLD] [-r RAW_ID_THRESHOLD] app_name [model_name [model_name ...]] -----------------------------
以上です。
これ、便利ですね。
コメント