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 페이지에 등록
이제 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를 대체해주기 위해서 verbose_name_plural 을 지정해준다.
#별도로 테이블명을 지정하고 싶을 때 쓰는 코드(안해도 됨)
class Meta:
db_table = 'user_define_fuser_table' #테이블 명 지정
verbose_name = '사용자 모임' #노출될 테이블 이름 변경
verbose_name_plural = '사용자 모임'