Так что я QuerySet обновитьКаков наиболее эффективный способ итерации объектов django, обновляющих их?
stories = Story.objects.filter(introtext="")
for story in stories:
#just set it to the first 'sentence'
story.introtext = story.content[0:(story.content.find('.'))] + ".</p>"
story.save()
И операция сохранения() полностью убивает производительность. И в списке процессов есть несколько записей для «./manage.py shell». Да, я запускал это через оболочку django.
Однако в прошлом я запускал сценарии, которые не нужно использовать save(), поскольку он менял много-много полей. Эти скрипты были очень результативными. В моем проекте есть этот код, который может иметь отношение к тому, почему эти сценарии были настолько хороши.
@receiver(signals.m2m_changed, sender=Story.tags.through)
def save_story(sender, instance, action, reverse, model, pk_set, **kwargs):
instance.save()
Каков наилучший способ эффективного обновления большого набора запросов (10000+)?
Должен ли я изменить этот последний фильтр на get? – straykiwi
Нет, ты не мог. Следуйте ссылке на документацию в своем ответе и читайте: «Если вы просто обновляете запись и ничего не должны делать с объектом модели, наиболее эффективным подходом является вызов update(), а не загрузка объекта модели в память. »« – catavaran
Это было НЕВЕРОЯТНО быстрее. Мне никогда не приходило в голову обернуть одну транзакцию. спасибо – straykiwi