Массовое обновление таблицы - PullRequest
3 голосов
/ 01 октября 2010

Я хочу обновить таблицу клиентов с помощью таблицы из нашей системы бухгалтерского учета.К сожалению, я не могу просто удалить данные и перезагрузить их все, потому что в таблице есть несколько записей, которых нет в импортированных данных (не спрашивайте).

Для 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 ]

2 голосов
/ 01 октября 2010

Посмотрите на мой ответ здесь: Django: форма, которая обновляет X количество моделей

В QuerySet есть метод update() - остальные объяснены в приведенной выше ссылке.

1 голос
/ 01 октября 2010

Я сделал очень грубую попытку найти решение этой проблемы, но она еще не закончена и не поддерживает работу с объектами django orm напрямую - пока.

http://pypi.python.org/pypi/dse/0.1.0

Это не был должным образом тест, и дайте мне знать, если у вас есть какие-либо предложения о том, как его улучшить. Использование django orm для таких вещей ужасно.

Thomas

1 голос
/ 01 октября 2010

Я добился определенного успеха, используя этот фрагмент массового обновления: http://djangosnippets.org/snippets/446/

Это немного устарело, но работало на django 1.1, так что, я думаю, вы все еще можете заставить его работать. Если вы ищете быстрый способ сделать одноразовую массовую вставку, это самый быстрый способ (я не уверен, что доверю этому для регулярного использования без серьезного тестирования производительности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...