본문 바로가기
Python/Django

Django 자체 기능 Admin 맛보기!

by K-밍키 2022. 5. 29.

Django의 대표 기능 중 하나인 Admin을 살펴보고자 합니다.


1. Admin의 기능 : 데이터베이스 내 데이터를 직관적으로 관리가 가능

 

2. Django Admin 계정 생성하기(CLI의 VENV에서 입력)

python manage.py createsuperuser

venv 터미널에서 admin 계정 생성하기

 

 ※ 패스워드는 안 보이게 입력되나 실제로 입력되고 있음

 

3. http://127.0.0.1:8000/admin 로 접속

어드민 페이지 접속화면

 

4. Django에서 기본 제공하는 Users 모델을 확인 가능

 

5. 직접 만든 모델을 Admin에 등록 : user/admin.py

from django.contrib import admin
from .models import UserModel

admin.site.register(UserModel) # 직접 만든 UserModel을 Admin에 추가

 

6. 한걸음 더! 글쓰기(Tweet 모델) 생성하여 Admin에 넣어주기

 6-1. Tweet 모델 구조 생성

# tweet/models.py
from django.db import models
from user.models import UserModel

class TweetModel(models.Model):
    class Meta:
        db_table = "tweet"

    author = models.ForeignKey(UserModel, on_delete=models.CASCADE) # 이전에 생성한 UserModel의 값으로 지정한다.
    content = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 6-2. 신규 모델을 DB에 인식

python manage.py makemigrations
python manage.py migrate

 6-3. Admin에 추가 : tweet/admin.py

from django.contrib import admin
from .models import TweetModel

# Register your models here.
admin.site.register(TweetModel)

 

7. 추가내용 : admin리스트 내 오브젝트명을 입력한 값(author)으로 노출하고자 할 때

# tweet/models.py
from django.db import models
from user.models import UserModel

class TweetModel(models.Model):
    class Meta:
        db_table = "tweet"
        
    # 추가 기입사항
    def __str__(self):
        return self.author
    #-----

    author = models.ForeignKey(UserModel, on_delete=models.CASCADE) # 이전에 생성한 UserModel의 값으로 지정한다.
    content = models.CharField(max_length=256)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

※ 신규 모델을 생성하고 인식시킬 시 항상 서버를 꺼주도록 하자!