1차 프로젝트 [오설록 클론코딩]

인간·2022년 7월 24일
0

총 백엔드 3명 프론트 3명으로 구성되었고

백엔드는 일단 모델링 부터 구성하였다.

필수 구현사항 이었던

  • 로그인/회원가입, 장바구니, 상품목록(필터, 정렬), 상품상세

그외 추가사항으로는 마이페이지(회원페이지), admin페이지, 상품 리뷰, 주문

이렇게 정했다.

그중에서 나는 장바구니를 맡았고 빨리 끝나게되면 주문내역을 할것이다.

먼저 모델링

from django.db   import models

from core.models import TimeStampModel

class User(TimeStampModel):
    name          = models.CharField(max_length=50)
    username      = models.CharField(max_length=50, unique=True)
    password      = models.CharField(max_length=250)
    mobile_number = models.CharField(max_length=200)
    birth_day     = models.DateField()

    class Meta:
        db_table = 'users'

Users의 모델링이다. 멘토님과 대화를 해봤는데 굳이 기능적으로 도움이 되는것이 아니라면 하드코딩적 요소는 다뺴다보니 정말 딱 필요 한 것만 넣게되었다.

from django.db          import models

from categories.models  import SecondCategory
from core.models        import TimeStampModel

class Type(models.Model):
    name = models.CharField(max_length=45)

    class Meta:
        db_table = 'types'

class Product(TimeStampModel):
    title           = models.CharField(max_length=45)
    description     = models.TextField()
    second_category = models.ForeignKey(SecondCategory, on_delete=models.CASCADE)
    price           = models.DecimalField(decimal_places=3, max_digits=10)
    stock           = models.IntegerField()
    discount        = models.DecimalField(null=True, decimal_places=0, max_digits=3)
    types           = models.ManyToManyField('Type')

    class Meta:
        db_table = 'products'

class ThumbnailImage(models.Model):
    url     = models.URLField()
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='thumbnail_images')
    
    class Meta:
        db_table = 'thumbnail_images'

class DetailImage(models.Model):
    url     = models.URLField()
    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='detail_images')
    
    class Meta:
        db_table = 'detail_images'

상품 구성 모델링이 상당히 어려웠다.
타입을 구성하고 상품상세페이지를 고려하여 구성하였고
실제 오설록과 거의 비슷하게 만드려고 최대한 노력했다.

썸네일 이미지를 따로만든 이유는 이미지가 2장씩들어가기때매 상세페이지랑은
완전히 분리가 필요하다라고 생각해서 저렇게 만들었다.

2차에 계속...

profile
잇츠미

0개의 댓글