Python | プログラミング学習 Djang.[在庫管理] #04.02 models

django004.02

PythonのWebアプリケーションフレームワーク”Django”について無料で学習します。
在庫管理アプリのモデルを生成する。

準備

※仮想環境”venv”にて進めます。

環境

環境version備考(コマンド)
Rocky Linux8.4cat /etc/redhat-release
Python3.6.8python -V
Django3.2django-admin –version

モデル生成

少し長いですがモデルを作成します。

ForeignKeyはユーザー,商品,仕入れ先となります。

今回のForeignKeyは1:多のリレーションモデルとなります。

一つのユーザーに多くの商品が紐づいてる形ですね。

詳しくは色々サイトあるのでググりましょう!

“null=True, blank=True”を記載しないとマイグレーション時に「値どおするん?」とめっちゃ聞かれるので記載しておきましょう。

orderPro/orderApp/models.py
from django.db import models
from django.contrib.auth.models import User

# ユーザー
class userTrade(models.Model):
    # ユーザー名
    name = models.CharField(max_length=100)
    # 備考
    remarks = models.CharField(max_length=256, null=True, blank=True)

    def __str__(self):
        return self.name

# 仕入れ先
class userSupplier(models.Model):
    # 仕入れ先
    name = models.CharField(max_length=100)
    # 備考
    remarks = models.CharField(max_length=256, null=True, blank=True)

    def __str__(self):
        return self.name

# 商品
class item(models.Model):
    # 商品名
    name = models.CharField(max_length=100)
    # 規格
    size = models.CharField(max_length=100)
    # 数量
    quantity = models.FloatField()

    def __str__(self):
        return self.name

# 受注
class orderItem(models.Model):
    # 記入日
    createdDate = models.DateField(auto_now_add=True, null=True, blank=True)
    # 納入日
    deliveryDate = models.DateField(null=True, blank=True)
    # 納入日(変更)
    deliveryDateSub = models.DateField(null=True, blank=True)
    # ユーザー
    userTrade = models.ForeignKey(userTrade,related_name='UserTrade',on_delete=models.CASCADE, null=True, blank=True)
    # 仕入れ先
    supplier = models.ForeignKey(userSupplier,related_name='Supplier',on_delete=models.CASCADE, null=True, blank=True)
    # 商品 
    item = models.ForeignKey(item,related_name='OrderItem',on_delete=models.CASCADE, null=True, blank=True)
    # 規格
    size = models.CharField(max_length=100, null=True, blank=True)
    # 数量
    quantity = models.FloatField(null=True, blank=True)
    # 仕入れ値
    purchasePrice = models.FloatField(null=True, blank=True)
    # 売り値
    sellingPrice = models.FloatField(null=True, blank=True)
    # 利益
    profit = models.FloatField(null=True, blank=True)
    # 備考
    remarks = models.CharField(max_length=256, null=True, blank=True)

    def __str__(self):
        return self.userTrade

マイグレーション

python manage.py makemigrations orderApp

マイグレーションテーブル生成

python manage.py migrate

ロールバック(データを消す場合)

python manage.py migrate orderApp zero

テーブル削除

テーブルを削除したい場合は”migrations”フォルダと”db.sqlite3″を削除する。

ただし、管理者データも削除してしまうので、改めて管理者を生成する必要がある。

タイトルとURLをコピーしました