티스토리 뷰

 

● 프로젝트 폴더 만든 후에, startapp으로 필요한 앱 추가

django-admin startapp users

django-admin startapp product

django-admin startapp order

 

 

● settings.py INSTALLED_APPS 추가

INSTALLED_APPS += [
    'users',
    'product',
    'order',
]

 

 

● 생성된 app 에 대해서 변경사항을 저장하고, DB 생성을 위해서 migrate

python manage.py migrate

 

 

● 사용자 모델 Users 정의하기 users/models.py

 

- 사용자 모델에 사용자 아이디, 비밀번호, 등록날짜 등 기본적인 필드를 추가한다.

 

- 쇼핑몰의 특성상 모든 사용자가 상품을 등록할 수 없다. 정해진 사용자만 상품을 등록할 수 있도록 하기 위해 level 이라는 필드를 추가하여 사용자의 등급을 지정한다. 등급과 관련된 필드는 없기 때문에 CharField에 choices 인자를 추가한다. 

choices = (('db에서 보여지는 이름', 'admin이나 templates에서 보여지는 이름'), ) 

 

- 그렇다면 level default 값은 어떻게 되는지? 나의 경우에는 회원가입 뷰에서 임의로 level = 'user' 으로 등록하고, 등급 변경이 필요한 사용자가 있다면 admin 페이지에서 바꿀 수 있도록 하는 시스템으로 구성했다.

 

- model 구성 후에는 makemigrations migrate 잊지 않기

from django.db import models

class Users(models.Model):
    email = models.CharField(verbose_name="이메일", max_length = 128)
    password = models.CharField(max_length = 64, verbose_name = "비밀번호" )
    registered_date = models.DateTimeField(auto_now_add=True, verbose_name="등록시간")
    level = models.CharField(verbose_name="사용자 등급", max_length=8,
    choices = (('admin', '관리자'), ('user', '일반 사용자')))

    def __str__(self):
        return self.email

    class Meta:
        db_table = "Shoppingmall_users"
        verbose_name = "사용자"
        verbose_name_plural = "사용자"

 

 사용자 users/admin.py

- admin 화면에서 어떻게 보여질지 정의

from django.contrib import admin
from .models import Users

class UsersAdmin(admin.ModelAdmin):
    list_display = ('email',)

admin.site.register(Users, UsersAdmin)

 

 

 

댓글