2
感谢您在这里阅读我的问题。Django适配器:如何正确使用更新元选项
我正在做一家摄影公司的网上商店,我需要阅读一个csv文件来更新数据库上的产品。我正在使用django-adaptors迭代文件并保存信息,现在第一次运行良好,但如果再次运行该命令,应用程序将创建新对象而不是覆盖现有信息。
问题是我不知道什么是使用更新元选项的正确方法。 (你可以看到它在the documentation)
这是代码,我现在所拥有的:
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异常。
有人可以解释我做什么是正确的方法吗?
感谢您的回答。
Cristian
完美!谢谢你的回答,做到了! –