感谢您在这里阅读我的问题。
我正在为一家摄影公司开设网上商店,我需要读取一个 csv 文件来更新数据库中的产品。我正在使用django-adaptors来迭代文件并保存信息,现在第一次运行良好,但如果再次运行该命令,应用程序会创建新对象而不是覆盖现有对象。
问题是我不知道使用更新元选项的正确方法是什么。(您可以在文档中看到它)
这是我现在拥有的代码:
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']
}
正如您在上面看到的,我有带有“键”值的字典,但我不知道如何定义“自然键”列表,并且在尝试运行命令时出现 KeyError 异常。
有人可以解释一下正确的方法是什么吗?
谢谢回答。
克里斯蒂安