我想用会计系统中的电子表格更新客户表。不幸的是,我不能只清除数据并重新加载所有数据,因为表中有一些记录不在导入的数据中(不要问)。
对于2000年的记录,这需要大约5分钟,我想知道是否有更好的方法。
for row in data:
try:
try:
customer = models.Retailer.objects.get(shared_id=row['Customer'])
except models.Retailer.DoesNotExist:
customer = models.Retailer()
customer.shared_id = row['Customer']
customer.name = row['Name 1']
customer.address01 = row['Street']
customer.address02 = row['Street 2']
customer.postcode = row['Postl Code']
customer.city = row['City']
customer.save()
except:
print formatExceptionInfo("Error with Customer ID: " + str(row['Customer']))
答案 0 :(得分:2)
在这里查看我的答案:Django: form that updates X amount of models
QuerySet具有update()
方法 - 休息在上面的链接中解释。
答案 1 :(得分:1)
我使用此批量更新代码段取得了一些成功: http://djangosnippets.org/snippets/446/
它有点过时了,但它适用于django 1.1,所以我想你仍然可以使它工作。如果您正在寻找一种快速进行一次性批量插入的方法,那么这是最快的(我不确定我是否会在没有认真测试性能的情况下经常使用它)。
答案 2 :(得分:1)
我已经对这个问题的解决方案做了非常粗暴的尝试,但它还没有完成,它不支持直接使用django orm对象 - 但是。
http://pypi.python.org/pypi/dse/0.1.0
它没有得到正确的测试,如果您对如何改进它有任何建议,请告诉我。使用django orm做这样的事情是可怕的。
托马斯