【Django】관리 화면의 커스터마이즈

12409 단어 admin장고맞춤형

소개



최근 업무에서 장고를 만질 기회가 있었기 때문에,
그 때 조사한 내용을 수시로 갱신해 나가려고 생각합니다.

완전히 자신 용 기사이므로 많이 요구하지 마십시오.

· 전제
관리 화면에 로그인할 수 있는 상태
models.py에 작성하고 migrate가 완료되었습니다.

models.py의 내용



이번 models.py의 내용은 아래와 같습니다.

models.py
from django.db import models

class User(models.Model):
    name = models.CharField("名前", max_length=32)
    mail = models.EmailField()

    def __str__(self):
        return self.name

class Entry(models.Model):
    STATUS_DRAFT = "draft"
    STATUS_PUBLIC = "public"
    STATUS_SET = (
        (STATUS_DRAFT, "下書き"),
        (STATUS_PUBLIC, "公開"),
    )

    title = models.CharField("タイトル", max_length=128)
    body = models.TextField("本文")
    created_at = models.DateTimeField("作成日", auto_now_add=True)
    updated_at = models.DateTimeField("更新日", auto_now=True)
    status = models.CharField("公開ステータス", choices=STATUS_SET, default=STATUS_DRAFT, max_length=8)
    author = models.ForeignKey(User, related_name="entries", verbose_name="ユーザ", on_delete=models.CASCADE)

    def __str__(self):
        return self.title

그럼, 이 상태에서 어떠한 기술을 해 나가면
관리 화면이 커스터마이즈 되는지를 써 갑니다.

관리 화면 사용자 정의


python3 manage.py startapp <アプリ名> 에서 정의한 앱 아래에 존재하는,admin.py 로 기본적으로 설정을 합니다.

페이지내 링크를 붙였으므로, 원하는 것을 선택해 주세요.
  • 관리 화면에 표시
  • 편집 화면에 표시할 item 사용자 정의
  • 선택 화면에 여러 항목 표시

  • 관리 화면에 표시



    초기 상태에서는 관리 화면에 작성한 Model이 표시되지 않으므로,
    그것을 표시하려면 다음을 작성해야합니다.

    admin.py
    from django.contrib import admin
    from .models import User, Entry
    
    
    @admin.register(User)
    class UserAdmin(admin.ModelAdmin):
        pass
    
    @admin.register(Entry)
    class EntryAdmin(admin.ModelAdmin):
        pass
    
    @admin.register( )( )内 는 모델명을 기술해 주세요.
    또한 작성하려면 모델을 가져와야 합니다.

    목록으로 돌아가기

    편집 화면에 표시할 항목을 사용자 정의



    편집 화면으로 전환하면 기본적으로 편집 가능한 모든 필드가 표시됩니다.


    이 중에서 제목과 본문만 표시하고 싶은 경우는 아래와 같이 기술합니다.

    admin.py
    from django.contrib import admin
    from .models import User, Entry
    
    
    @admin.register(User)
    class UserAdmin(admin.ModelAdmin):
        model = User
        fields = ["name", "mail"]
    
    @admin.register(Entry)
    class EntryAdmin(admin.ModelAdmin):
        model = Entry
        fields = ["title", "body"]
    

    fields의 내용을 편집하면 표시 항목이 변경됩니다.

    그러면 이미지처럼 보입니다. 표시 내용이 감소했습니다.

    목록으로 돌아가기

    선택 화면에 여러 항목 표시



    항목에서 항목을 선택하는 화면에서 기본적으로 제목만 표시됩니다.


    이 화면에서 제목뿐만 아니라,
    본문이나 작성자를 표시하고 싶습니다! 라고 하는 경우는 아래와 같이 기술합니다.

    admin.py
    from django.contrib import admin
    from .models import User, Entry
    
    
    @admin.register(User)
    class UserAdmin(admin.ModelAdmin):
        model = User
        list_display = ["name", "mail"]
    
    @admin.register(Entry)
    class EntryAdmin(admin.ModelAdmin):
        model = Entry
        list_display = ["title", "body", "status", "author"]
    

    list_display를 편집하면 표시 항목이 변경됩니다.

    설명 후 이미지처럼 보입니다.

    목록으로 돌아가기

    사이고에게



    이상이 됩니다.

    아직 조금 만졌을 뿐이므로 항목이 적지만,
    새로운 지식이 늘어나면 이쪽의 기사를 갱신해 가므로 꼭 봐 주세요.

    좋은 웹페이지 즐겨찾기