add model in admin site with admin.site.register
- admin site {doc}
- Custom users and
django.contrib.admin{doc} - purpose of admin.py {SOF}
- bookstore/users/admin.py {GH}
<app>/admin.py에 다음과 같은 코드를 작성하였더니,localhost:8000/admin페이지에 새로운 애트리뷰트가 생겼다.
"""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
특별히 추가할 필드가 없는 모델을 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