PythonのWebアプリケーションフレームワーク”Django”について無料で学習します。
在庫管理アプリのモデルを生成する。
準備
参考.Djang
※仮想環境”venv”にて進めます。
環境
環境 | version | 備考(コマンド) |
Rocky Linux | 8.4 | cat /etc/redhat-release |
Python | 3.6.8 | python -V |
Django | 3.2 | django-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″を削除する。
ただし、管理者データも削除してしまうので、改めて管理者を生成する必要がある。