본문 바로가기
  • 소소한 개발자 이야기
Python & Django/Django Framework 실전

[설정] Model, Admin 구성하기

by Siwan_Min 2020. 7. 21.
728x90

우선VS Code 를 실행해 주시고 프로젝트를 진행할 폴더를 하나 생성해 주세요

프로젝트 폴더 생성

터미널에 virtualenv fc_env 를 입력해주면 가상환경 폴더가 생성 됩니다. 

가상 환경 폴더

그리고 fc_env/Scripts/activate.bat 를 하면 가상 환경이 활성화 됩니다. 

 

터미널에 pip install django 를 입력해서 django 패키지 또한 설치해주세요 

장고 패기지 설치

 

django-admin startproject fc_django 를 하면 fc_django 라는 프로젝트 폴더가 생깁니다. 

cd fc_django 를 해서 프로젝트 폴더 안으로 들어간 후 앱을 생성해 주세요

앱 생성은 fcuser, order, product 세 개의 앱을 생성 할 겁니다. 

 

django-admin startapp fcuser

django-admin startapp order

django-admin startapp product 

터미널에 위 세가지 명령어를 입력하면 앱이 생성됩니다.

앱 생성

 

그 다음은 모델과 어드민 설정! 

fcuser > models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.db import models
 
# Create your models here.
 
class Fcuser(models.Model):
    email = models.EmailField(verbose_name='이메일')
    password = models.CharField(max_length=64, verbose_name='비밀번호')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='등록날짜')
 
    def __str__(self):
        return self.email 
 
    class Meta:
        db_table = 'fastcampus_fcuser'
        verbose_name = '사용자'
        verbose_name_plural = '사용자'

 

order > models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from django.db import models
 
# Create your models here.
 
class Order(models.Model):
    fcuser = models.ForeignKey('fcuser.Fcuser', on_delete=models.CASCADE, verbose_name='사용자')
    product = models.ForeignKey('product.Product', on_delete=models.CASCADE, verbose_name='상품')
    quantity = models.IntegerField(verbose_name='수량')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='등록날짜')
 
    def __str__(self):
        return str(self.fcuser) + ' ' + str(self.product)
 
    class Meta:
        db_table = 'fastcampus_order'
        verbose_name = '주문'
        verbose_name_plural = '주문'

 

product > models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from django.db import models
 
# Create your models here.
 
class Product(models.Model):
    name = models.CharField(max_length=256, verbose_name='상품명')
    price = models.IntegerField(verbose_name='상품가격')
    description = models.TextField(verbose_name='상품설명')
    stuck = models.IntegerField(verbose_name='재고')
    register_date = models.DateTimeField(auto_now_add=True, verbose_name='등록날짜')
 
    def __str__(self):
        return self.name
        
    class Meta:
        db_table = 'fastcampus_product'
        verbose_name = '상품'
        verbose_name_plural = '상품'

 

fcuser > admin.py 설정

1
2
3
4
5
6
7
8
9
from django.contrib import admin
from .models import Fcuser
 
# Register your models here.
 
class FcuserAdmin(admin.ModelAdmin):
    list_display = ('email', )
 
admin.site.register(Fcuser, FcuserAdmin)

 

order > admin.py 설정

1
2
3
4
5
6
7
8
from django.contrib import admin
from .models import Order
# Register your models here.
 
class OrderAdmin(admin.ModelAdmin):
    list_display = ('fcuser''product')
 
admin.site.register(Order, OrderAdmin)

 

product > admin.py 설정

1
2
3
4
5
6
7
8
from django.contrib import admin
from .models import Product
# Register your models here.
 
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name''price')
 
admin.site.register(Product, ProductAdmin)

 

이렇게 하면 모델과 어든 설정은 끝났습니다. 

그리고나서 터미널 환경을 통해 마이그레이션을 생성해 주세요.
python manage.py makemigrations
python manage.py migrate

그리고

python manage.py createsuperuser 을 입력하고 어드민 계정을 생성해 주세요
아이디와 이메일, 비밀번호를 입력 한 뒤 
python manage.py runserver 을 하고 주소창에 127.0.0.1:8000/admin 을 입력하고 어드민 계정으로 로그인 해주세요 

 

그리고 난 뒤 사용자에서 테스트 계정과 상품을 등록 해주시고 주문을 추가해 보세요 !

정상적으로 작동이 되시는 걸 확인 하실 수 있습니다. 

728x90

댓글