반원 블로그

django 생성한 앱의 모델을 admin에 등록하기 본문

2018~/Django 개인 공부 정리

django 생성한 앱의 모델을 admin에 등록하기

반원_SemiCircle 2019. 9. 4. 00:36

1. 생성한 앱의 admin.py에 들어가자. 여기서 app은 fuser를 이용한다.

admin.py에는 관리자 페이지에서 쓸 정보를 기입하도록 되어있다.

from django.contrib import admin

# Register your models here.

 

2. 먼저 model.py안에 있는 Fuser 클래스를 참조하자.

그리고 admin에 등록하는 코드까지만 심플하게 작성한다.

from django.contrib import admin
from .models import Fuser

# Register your models here.

class FuserAdmin(admin.ModelAdmin): #admin의 ModelAdmin 클래스를 상속
    pass #상속만 받아 새로운 클래스를 생성

admin.site.register(Fuser,FuserAdmin) #admin 페이지에 등록

FUSER 앱이 추가되었다.

이제 Fusers에 들어가서 추가/수정 등의 작업을 할 수 있다.

그런데 지금은 회원을 추가해도 불편하게 나온다. (특정 데이터를 변환하니 '클래스명 object'로 나온 것)

이를 좋게 수정해보도록 하자.

 

3. (방법1) models.py에서 def __str__ 정의하기

파이썬은 특정 객체(클래스)를 문자열로써 호출할 때 __str__ 함수가 실행되도록 되어있다..

from django.db import models

# Create your models here.


class Fuser(models.Model):  # models.Model를 상속
    username = models.CharField(max_length=32,
                                verbose_name='사용자명'  # admin 페이지에서 보일 컬럼명
                                )
    #5~7을 드래그 한뒤 Alt+Shift+Down하면 편함
    password = models.CharField(max_length=64,
                                verbose_name='비밀번호'  # admin 페이지에서 보일 컬럼명
                                )
    register_dttm = models.DateField(auto_now_add=True, # 자동으로 해당 시간이 추가됨
                                     verbose_name="가입날짜"
                                     )


    #데이터가 문자열로 변환이 될 때 어떻게 나올지(반환해줄지) 정의하는 함수가 __str__이다.
    def __str__(self):
        return self.username


    #별도로 테이블명을 지정하고 싶을 때 쓰는 코드(안해도 됨)
    class Meta:
        db_table = 'user_define_fuser_table' #테이블 명 지정

 

4.(방법2) 여러가지 정보를 한번에 보기위해 admin.py에서 상속만해서 만든 class에 정보를 추가한다.

이 때 class에 list_display 변수(admin 페이지에서의 필드명이 list_display인 것)에 데이터를 다음처럼 넣어주면된다.

from django.contrib import admin
from .models import Fuser

# Register your models here.

class FuserAdmin(admin.ModelAdmin): #admin의 ModelAdmin 클래스를 상속
    # pass #상속만 받아 새로운 클래스를 생성
    list_display = ('username','password')

admin.site.register(Fuser,FuserAdmin) #admin 페이지에 등록

5. 이번에는 어드민 페이지에서 Fusers라고 앱명이 나오는 부분을 수정해보자.

models.py에서 class Meta에 verbose_name = '앱이 보여질 명칭'으로 설정하면 된다.

from django.db import models

# Create your models here.

class Fuser(models.Model):  # models.Model를 상속
    username = models.CharField(max_length=32,
                                verbose_name='사용자명'  # admin 페이지에서 보일 컬럼명
                                )
    #5~7을 드래그 한뒤 Alt+Shift+Down하면 편함
    password = models.CharField(max_length=64,
                                verbose_name='비밀번호'  # admin 페이지에서 보일 컬럼명
                                )
    register_dttm = models.DateField(auto_now_add=True, # 자동으로 해당 시간이 추가됨
                                     verbose_name="가입날짜"
                                     )


    #데이터가 문자열로 변환이 될 때 어떻게 나올지(반환해줄지) 정의하는 함수가 __str__이다.
    def __str__(self):
        return self.username


    #별도로 테이블명을 지정하고 싶을 때 쓰는 코드(안해도 됨)
    class Meta:
        db_table = 'user_define_fuser_table' #테이블 명 지정
        verbose_name = '사용자 모임' #노출될 테이블 이름 변경

장고가 자동으로 s를 붙여줬다.

자동으로 붙는 s를 대체해주기 위해서 verbose_name_plural 을 지정해준다.

    #별도로 테이블명을 지정하고 싶을 때 쓰는 코드(안해도 됨)
    class Meta:
        db_table = 'user_define_fuser_table' #테이블 명 지정
        verbose_name = '사용자 모임' #노출될 테이블 이름 변경
        verbose_name_plural = '사용자 모임'

 

Comments