min_price_recordsとnext_min_price_recordsから最安値と次の安値を計算し、MergedPriceRecordモデルに保存

2024年6月10日

理解しました。上記の手順をモデルに格納するように変更しましょう。

まず、マージとグループ化を行う関数を定義します。次に、その関数を使って最安値と次の安値を計算し、それらの値をモデルに保存します。

以下に、それを行うためのコードを示します:

python
from itertools import chain
from value_search.models import MergedPriceRecord

def merge_and_save_price_records(min_price_records, next_min_price_records):
    # min_price_recordsとnext_min_price_recordsを結合
    merged_records = list(chain(min_price_records, next_min_price_records))

    # original_product_codeでグループ化して最安値と次の安値を計算
    merged_grouped_records = {}
    for record in merged_records:
        original_product_code = record['original_product_code']
        if original_product_code not in merged_grouped_records:
            merged_grouped_records[original_product_code] = {'min_price': None, 'next_min_price': None}
        if 'min_price' in record:
            merged_grouped_records[original_product_code]['min_price'] = record['min_price']
        if 'next_min_price' in record:
            merged_grouped_records[original_product_code]['next_min_price'] = record['next_min_price']

    # 最安値と次の安値をモデルに保存
    for original_product_code, prices in merged_grouped_records.items():
        min_price = prices['min_price']
        next_min_price = prices['next_min_price']
        
        # MergedPriceRecordモデルのインスタンスを作成して保存
        merged_price_record = MergedPriceRecord(
            original_product_code=original_product_code,
            min_price=min_price,
            next_min_price=next_min_price
        )
        merged_price_record.save()

この関数を使って、min_price_recordsnext_min_price_recordsから最安値と次の安値を計算し、MergedPriceRecordモデルに保存できます。このモデルは、original_product_codemin_pricenext_min_priceの3つのフィールドを持ちます。必要に応じて、これらのフィールドを調整してください。

未分類

Posted by ぼっち