メインプロジェクトレビュー-Dr.Tart(1)-

23730 ワード


突然Pythonの文章だけの私の携帯電話のベルの中に現れたプロジェクトの回顧...ブログを書くことにあまり興味がない私は...もう一週間も忘れていない.当日習ったのは当日書けばそれに越したことはないのですが、今日も書くならプロジェクトから振り返る予定です.

1.プロジェクト企画


プロジェクトチームの発表初日.どんなサイトがクローニングされるのか心配な期待クラスで、化粧品サイトDr.jartチームに加入しました.
  • Frontend:度延、尚勲、有真
  • Backend:鄭玄、朱豪、ミンヘ(私)
  • 想像できない(?)これは組み合わせ(暗黙の了解度が高いのはアン秘密)で、位置を変えた後、すぐにどのような方法でプロジェクトを行うかを計画し始めます.これまでプロジェクトを行ってきた先輩騎手たちのプロジェクト成果を見て、どのように計画するのか、何度も考えて、集まって数分も経たないうちに、Dr.jartでjをtに変えてデザートを販売したいDr.tartプロジェクトが始まりました…!
    日常生活に飽きたあなたのために、Dr.tartはデザートをあげました.
    「新青年」のスローガンを決め、役を割り当て始めた.

    2.モデリング


    現在はフロントとバックグラウンドに分かれて進行方向を設定し、プロジェクトの骨格をつかむため、鄭鍱朱豪とモデリングを開始した.どのようにモデリングを行うかはプロジェクトの方向性や機能実現の成否を決めるので、本当に努力して行いました.(2-3日かけていたようです)

    Dr.tartはデザートを販売するビジネスサイトで、対応するモデリングが必要です.
    モデリングの面では、残念なことに、Dr.jartのホームページをあまり参考にしていません.ビジネスサイトは悪くないだろうな~という安易な考えがプロジェクト中期から後期にかけて何度も足を引っ張った.機能の実現を目的としたモデリングを開始します.
  • 会員、
  • 登録
  • 完全商品ページ、詳細商品ページ
  • ショッピングバスケット
  • 支払窓口
  • その他の実施(商品固有の賛、商品固有のコメント、顧客のホームページ)
  • 今の考えはそうですが、サイト全体の流れを理解してモデリングすれば、もっと簡単になるはずです.(これで終わりじゃなくてよかった!)
    ERDコメントを受けたときにいくつかのフィードバックを得ました.
  • 商品の価格は拡張性(国際)を考慮し、小数点の10進フィールド
  • を使用する.
  • orderテーブルの2番目の標準化は、有効なアイデンティティ
  • を使用する.
  • transaction
  • 程度.私はすべての人が試したことがあることを望んでいますが、私も多くの時間をかけて実施しました.
    第2正規化や有効IDに触れていないのが残念です.decimalの場合、使うのは難しくありませんが、事務は非常に重要な概念なので、他の文章では単独で整理します!

    3. Models.pyの作成


    ERDモデリングに基づくモデル.pyの作成を始め、
  • user-朱豪
  • 製品-貞賢
  • order-私
  • 行う!
    users/models.py
    from django.db import models
    
    class User(models.Model):
        name         = models.CharField(max_length=100)
        email        = models.CharField(max_length=250, unique=True)
        password     = models.CharField(max_length=300)
        address      = models.CharField(max_length=100)
        vegan_or_not = models.BooleanField(default=False)
        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
    
    from users.models  import User
    
    class Menu(models.Model):
        name = models.CharField(max_length=20)
        
        class Meta:
            db_table='menus'
    
    class Category(models.Model):
        name = models.CharField(max_length=50)
        menu = models.ForeignKey(Menu, on_delete=models.CASCADE)
        
        class Meta:
            db_table='categories'
    
    class Product(models.Model):
        korean_name         = models.CharField(max_length=20)
        english_name        = models.CharField(max_length=20)
        thumbnail_image_url = models.URLField(max_length=200)
        price               = models.DecimalField(max_digits=10, decimal_places=2)
        created_at          = models.DateTimeField(auto_now_add=True)
        updated_at          = models.DateTimeField(auto_now=True)
        vegan_or_not        = models.BooleanField(default=False, null=False)
        sugar_level         = models.IntegerField(default=1)
        category            = models.ForeignKey(Category, on_delete=models.CASCADE)
        description         = models.CharField(max_length=1000)
        
        class Meta:
            db_table='products'
        
    class Image(models.Model):
        url       = models.URLField(max_length=300)
        product   = models.ForeignKey(Product, on_delete=models.CASCADE)
        
        class Meta:
            db_table='images'
        
    class Review(models.Model):
        user        = models.ForeignKey(User, on_delete=models.CASCADE)
        product     = models.ForeignKey(Product, on_delete=models.CASCADE)
        content     = models.CharField(max_length=200, null=True)
        created_at  = models.DateTimeField(auto_now_add=True, null=True)
        updated_at  = models.DateTimeField(auto_now=True, null=True)
        
        class Meta:
            db_table='reviews'
        
    class ReviewComment(models.Model):
        user        = models.ForeignKey(User, on_delete=models.CASCADE)
        review      = models.ForeignKey(Review, on_delete=models.CASCADE)
        content     = models.CharField(max_length=100, null=True)
        
        class Meta:
            db_table='review_comments'
        
    class Like(models.Model):
        user        = models.ForeignKey(User, on_delete=models.CASCADE)
        product     = models.ForeignKey(Product, on_delete=models.CASCADE)
        
        class Meta:
            db_table='likes'
    orders/models.py
    from django.db import models
    
    class Cart(models.Model):
        product      = models.ForeignKey('products.Product', on_delete=models.CASCADE)
        user         = models.ForeignKey('users.User', on_delete=models.CASCADE)
        quantity     = models.IntegerField(default=0)
        
        class Meta:
            db_table = 'carts'
            
    class OrderStatus(models.Model):
        status = models.CharField(max_length=20)
        
        class Meta:
            db_table = 'order_status'
            
    class Order(models.Model):
        user         = models.ForeignKey('users.User', on_delete=models.CASCADE)
        created_at   = models.DateTimeField(auto_now_add=True, null=True)
        updated_at   = models.DateTimeField(auto_now=True, null=True)
        address      = models.CharField(max_length=100)
        order_status = models.ForeignKey('OrderStatus', on_delete=models.CASCADE)
        
        class Meta:
            db_table = 'orders'
            
    class OrderItem(models.Model):
        order        = models.ForeignKey('Order', on_delete=models.CASCADE)
        product      = models.ForeignKey('products.Product', on_delete=models.CASCADE)
        quantity     = models.IntegerField(default=1)
        created_at   = models.DateTimeField(auto_now_add=True, null=True)
        updated_at   = models.DateTimeField(auto_now=True, null=True)
        
        class Meta:
            db_table = 'order_items'
    上記のモデリング作業が完了しました.次の記事では、これに基づいてviewを作成することについて説明します.