私の質問を読んでくれてありがとう。
私は写真会社の Web ショップを行っており、csv ファイルを読み取ってデータベース上の製品を更新する必要があります。私はdjango-adaptorsを使用してファイルを反復処理し、情報を保存していますが、最初はうまく機能していますが、コマンドを再度実行すると、アプリは既存のオブジェクトを上書きするのではなく、新しいオブジェクトを作成します。
問題は、Update メタ オプションを使用する正しい方法がわからないことです。(ドキュメントで確認できます)
これは私が今持っているコードです:
from models import Type, Vendor, Product
from adaptor.model import CsvModel
from adaptor import fields as adaptor_fields
# Prepare functions here, but are not relevant information
class csv(CsvModel):
mfr_code = adaptor_fields.CharField()
main_photo_url = adaptor_fields.CharField()
name = adaptor_fields.CharField()
product_url = adaptor_fields.CharField()
vendor = adaptor_fields.CharField(prepare=get_or_create_vendor)
type = adaptor_fields.CharField(prepare=get_or_create_type)
subtype = adaptor_fields.IgnoredField()
description = adaptor_fields.CharField()
specs = adaptor_fields.CharField()
tags = adaptor_fields.CharField()
stock = adaptor_fields.IntegerField(prepare=get_stock_value)
price = adaptor_fields.IntegerField(prepare=format_usd)
class Meta:
delimiter = ','
dbModel = Product
update = {
'keys': ['D1 Basic Kit 250/500', 'D1 Studio Kit 250/250']
}
上記のように、'keys' の値を持つ辞書がありますが、'natural keys' のリストを定義する方法がわからず、コマンドを実行しようとすると KeyError 例外が発生します。
誰かが正しい方法でそれを行う方法を説明できますか?
回答ありがとうございます。
クリスチャン