批量更新表格

时间:2010-10-01 08:50:36

标签: django django-queryset

我想用会计系统中的电子表格更新客户表。不幸的是,我不能只清除数据并重新加载所有数据,因为表中有一些记录不在导入的数据中(不要问)。

对于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']))

3 个答案:

答案 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做这样的事情是可怕的。

托马斯