[ChickIN] -1 <ERD 작성>

김가람휘·2022년 3월 4일
1

ChickIN

목록 보기
1/7

ERD사이트

# users/models.py
from django.db import models

class User(models.Model):
    username     = models.CharField(max_length=45)
    email        = models.EmailField(max_length=250, unique=True)
    password     = models.CharField(max_length=200)
    phone_number = models.CharField(max_length=45)
    address      = models.CharField(max_length=300)
    point        = models.IntegerField()
    created_at   = models.DateTimeField(auto_now_add=True)
    updated_at   = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'users'
# products/models.py
from django.db    import models

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

    class Meta:
        db_table = 'purchases'


class MainCategory(models.Model):
    name        = models.URLField(max_length=45)
    purchase    = models.ForeignKey('Purchase', on_delete=models.CASCADE)

    class Meta:
        db_table = 'main_categories'


class SubCategory(models.Model):
    name          = models.URLField(max_length=45)
    main_category = models.ForeignKey('MainCategory', on_delete=models.CASCADE)

    class Meta:
        db_table = 'sub_categories'


class Product(models.Model):
    name         = models.CharField(max_length=50)
    price        = models.DecimalField(decimal_places=2, max_digits=8)
    description  = models.TextField() 
    thumbnail    = models.URLField(max_length=1000)
    sub_category = models.ForeignKey('SubCategory', on_delete=models.CASCADE)
    options      = models.ManyToManyField('Option', through='ProductOption')

    class Meta:
        db_table = 'products'


class ProductImage(models.Model):
    image_url = models.URLField(max_length=1000)
    product   = models.ForeignKey('Product', on_delete=models.CASCADE)

    class Meta:
        db_table = 'product_images'


class Option(models.Model):
    name  = models.CharField(max_length=50)
    price = models.DecimalField(decimal_places=2, max_digits=8)

    class Meta:
        db_table = 'options'


class ProductOption(models.Model):
    product = models.ForeignKey('Product', on_delete=models.CASCADE)
    option  = models.ForeignKey('Option',  on_delete=models.CASCADE)

    class Meta:
        db_table = 'product_options'
# carts/models.py
from django.db       import models

class Cart(models.Model):
    quantity   = models.IntegerField()
    user       = models.ForeignKey('users.User', on_delete=models.CASCADE)
    product    = models.ForeignKey('products.Product', on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'carts'


class CartOption(models.Model):
    option = models.ForeignKey('products.Option', on_delete=models.CASCADE)
    cart   = models.ForeignKey('carts.Cart', on_delete=models.CASCADE)

    class Meta:
        db_table = 'cart_options'
# orders/models.py
from django.db import models

class Order(models.Model):
    order_number = models.UUIDField()
    address      = models.CharField(max_length=200)
    user         = models.ForeignKey('users.User', on_delete=models.CASCADE)
    order_status = models.ForeignKey('OrderStatus', on_delete=models.CASCADE)
    created_at   = models.DateTimeField(auto_now_add=True)
    updated_at   = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'orders'


class OrderItem(models.Model):
    quantity = models.IntegerField()  
    product  = models.ForeignKey('products.Product', on_delete=models.CASCADE)
    order    = models.ForeignKey('Order', on_delete=models.CASCADE)

    class Meta:
        db_table = 'order_items'


class OrderOption(models.Model):
    option     = models.ForeignKey('products.Option', on_delete=models.CASCADE)
    order_item = models.ForeignKey('OrderItem', on_delete=models.CASCADE)

    class Meta:
        db_table = 'order_options'


class OrderStatus(models.Model):
    status = models.CharField(max_length=45)

    class Meta:
        db_table = 'order_statuses'
  • 추후에 모델은 계속해서 수정될 수 있다!

0개의 댓글