損益分岐点(Break-even Point)を計算し、その値をデータベースに保存する
損益分岐点(Break-even Point)を計算し、その値をデータベースに保存するためには、Djangoのモデルに break_even_point フィールドを追加し、計算結果をそのフィールドに保存する方法があります。以下に具体的な手順を示します。
- モデルに
break_even_pointフィールドを追加する:
Djangoのモデルファイル (models.py) にbreak_even_pointフィールドを追加します。これにより、データベースに新しいカラムが作成されます。python from django.db import models class RakutenPriceResult(models.Model): original_product_code = models.CharField(max_length=100, primary_key=True) # 自社品番 min_price = models.IntegerField(null=True, blank=True) # 最安価格 min_shopCode = models.CharField(max_length=100, null=True, blank=True) # 最安価格のショップコード next_min_price = models.IntegerField(null=True, blank=True) # 最安の次の価格 next_min_shopCode = models.CharField(max_length=100, null=True, blank=True) # 最安価格の次のショップコード per_low_own_price = models.IntegerField(null=True, blank=True) # 自社のX%・最安で暫定的な最安価格 per_high_own_price = models.IntegerField(null=True, blank=True) # 自社のX%・高い暫定的な最安価格 yen_low_own_price = models.IntegerField(null=True, blank=True) # 自社のX円・最安で暫定的な最安価格 yen_high_own_price = models.IntegerField(null=True, blank=True) # 自社のX円・高い暫定的な最安価格 cost_price = models.IntegerField(null=True, blank=True) # 原価 break_even_point = models.FloatField(null=True, blank=True) # 商品単位の限界利益における損益分岐点 result_price = models.IntegerField(null=True, blank=True) # アップロードする価格 def __str__(self): return f"original_product_code: {self.original_product_code}, " f"min_price: {self.min_price}, " f"min_shopCode: {self.min_shopCode}, " f"next_min_price: {self.next_min_price}, " f"next_min_shopCode: {self.next_min_shopCode}, " f"per_low_own_price: {self.per_low_own_price}, " f"per_high_own_price: {self.per_high_own_price}, " f"yen_low_own_price: {self.yen_low_own_price}, " f"yen_high_own_price: {self.yen_high_own_price}, " f"cost_price: {self.cost_price}, " f"result_price: {self.result_price}, " f"break_even_point: {self.break_even_point}" - 損益分岐点を計算して保存する関数を作成する:
add_break_even_point関数内で、損益分岐点を計算し、それをモデルインスタンスのbreak_even_pointフィールドに保存します。python import pandas as pd from .models import RakutenPriceResult def add_break_even_point(): # 損益が0円を登録(それをベースにして、赤字、黒字の計算に使う) import_data = list(RakutenPriceResult.objects.values_list('original_product_code', 'cost_price', 'yen_low_own_price')) # DataFrameを作成 df = pd.DataFrame(import_data, columns=['original_product_code', 'cost_price', 'yen_low_own_price']) shipping = 500 # 送料 sizai = 50 # 梱包資材 zinkenhi = 0 # 商品別人件費 mall_fee_rate = 0.09 # モール手数料率 # 利益を計算する関数を定義 def calculate_profit(row): revenue = row['yen_low_own_price'] cost = row['cost_price'] profit = revenue - cost - (revenue * mall_fee_rate) - shipping - sizai - zinkenhi return profit # 各行の利益を計算して新しい列に追加 df['profit'] = df.apply(calculate_profit, axis=1) # 損益分岐点を計算してモデルに保存 df['break_even_point'] = (df['cost_price'] + shipping + sizai + zinkenhi) / (1 - mall_fee_rate) # モデルに計算結果を保存 for index, row in df.iterrows(): product_code = row['original_product_code'] break_even_point = row['break_even_point'] # プライマリーキーでモデルインスタンスを取得して更新 instance = RakutenPriceResult.objects.get(original_product_code=product_code) instance.break_even_point = break_even_point instance.save() print("損益分岐点を計算して保存しました。") - データベースにマイグレーションを適用する:
add_break_even_point関数を呼び出す前に、マイグレーションを作成し、適用してください。bash python manage.py makemigrations python manage.py migrate - 関数を実行する:
Djangoの管理コマンドを使用して関数を実行します。bash python manage.py shell >>> from your_app_name.file_name import add_break_even_point >>> add_break_even_point()
これにより、各商品の損益分岐点が計算され、データベースに保存されます。各ステップで適切にモデルと関数を設定することで、損益分岐点の自動計算とデータベースへの保存が行われます。

ディスカッション
コメント一覧
まだ、コメントがありません