Skip to content

add model in admin site with `admin.site.register` {django} {admin.py}

"""admin/ route에서 보여줄 정보들에 대하여 정의한다."""
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User


class Admin(UserAdmin):
    model = User
    list_display = ["email", "nickname", "is_staff"]


admin.site.register(User, Admin)

The admin.py file is used to display your models in the Django admin panel. You can also customize your admin panel.

AbstractBaseUser를 상속한 커스텀 유저일 경우#

Admin site에 모습을 드러내게 하기 위해서 반드시 django.contrib.auth.admin.UserAdmin을 확장하여야 한다. 자세한 사항은 문서와 아래 Note를 읽어보기 바란다. | 참고 코드 (allbooks)

[!note]
If you are using a custom ModelAdmin which is a subclass of django.contrib.auth.admin.UserAdmin, then you need to add your custom fields to fieldsets (for fields to be used in editing users) and to add_fieldsets (for fields to be used when creating a user). For example:

from django.contrib.auth.admin import UserAdmin
class CustomUserAdmin(UserAdmin):
    ...
    fieldsets = UserAdmin.fieldsets + ((None, {"fields": ["custom_field"]}),)
    add_fieldsets = UserAdmin.add_fieldsets + ((None, {"fields": ["custom_field"]}),)

ModelAdmin#

doc

특별히 추가할 필드가 없는 모델을 admin site에 띄우고 싶다면 굳이 새 클래스를 만들어 pass 할 필요 없이 다음과 같이 바로 admin.site.register 하면 된다.

admin.site.register(MyModel)

The register decorator#

https://docs.djangoproject.com/en/4.2/ref/contrib/admin/#the-register-decorator

from django.contrib.import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass