2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

django-extensionsのadmin_generatorコマンドを使ってからadmin.pyを自動記述

Last updated at Posted at 2020-08-23

やりたいこと

models.pyにテーブルがいっぱいあると、admin.pyへの記述が大変。
自動でやってほしい。

django-extensionsというライブラリのadmin_generatorコマンドを使うと自動でやってくれます。
models.pyの内容に合わせてうまいことやってくれます。

django-extensionsって?

django-extensionsmanage.pyの機能を拡張してくれるもので、 他にもいろいろながコマンドがあります。

インストール

インストールして

$ pip install django-extensions

settings.pyに追記するだけ

pj_name/settings.py
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'django_extensions', # <- 追記
]
...

実行

出力結果をadmin.pyに上書きします。

$APPには $ python manage.py startapp xxxで作ったアプリケーション名が入ります。

$ python manage.py admin_generator $APP > $APP/admin.py

結果

たとえばこんなclassは

models.py
...
class Users(models.Model):
    user_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    first_name = models.CharField(max_length=255)
    email = models.CharField(max_length=255)
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField()
    del_flg = models.IntegerField()

    class Meta:
        managed = False
        db_table = 'users'
...

こんな感じ

admin.py
...
@admin.register(Users)
class UsersAdmin(admin.ModelAdmin):
    list_display = (
        'id',
        'user_name',
        'last_name',
        'first_name',
        'email',
        'created_at',
        'updated_at',
        'del_flg',
    )
    list_filter = ('created_at', 'updated_at')
    date_hierarchy = 'created_at'
...

管理画面にログインするユーザーを作成

$ python manage.py createsuperuser

Username (leave blank to use 'anata_no_home_dir'): <- 任意の名前
Email address: <- 任意のメールアドレス
Password: <- パスワード
Password (again):  <- もう一回
Superuser created successfully.

ローカルサーバを起動

$ python manage.py runserver

ここにアクセス
http://127.0.0.1:8000/admin/
スクリーンショット 2020-08-21 13 21 13

先程つくったユーザー情報でログイン -> テーブルが表示されていればOKです。

おしまい

最後まで読んでいただきありがとうございました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?