Обновить сразу несколько объектов в Django?

Я использую Django 1.9. У меня есть таблица Django, которая представляет значение определенной меры по организации по месяцам с необработанными значениями и процентилями:

class MeasureValue(models.Model):
    org = models.ForeignKey(Org, null=True, blank=True)
    month = models.DateField()
    calc_value = models.FloatField(null=True, blank=True)
    percentile = models.FloatField(null=True, blank=True)

Обычно их около 10000 в месяц. Мой вопрос о том, могу ли я ускорить процесс установки значений на моделях.

В настоящее время я вычисляю процентили, извлекая все значения мер за месяц, используя запрос фильтра Django, преобразовывая его в фрейм данных pandas, а затем используя scipy's.rankdata установить ранги и процентили. Я делаю это, потому что панды иrankdata эффективны, способны игнорировать нулевые значения и способны обрабатывать повторяющиеся значения так, как я хочу, поэтому я доволен этим методом:

records = MeasureValue.objects.filter(month=month).values()
df = pd.DataFrame.from_records(records)
// use calc_value to set percentile on each row, using scipy's rankdata

Однако затем мне нужно извлечь каждое значение процентиля из фрейма данных и установить его обратно на экземпляры модели. Прямо сейчас я делаю это, перебирая строки данных и обновляя каждый экземпляр:

for i, row in df.iterrows():
    mv = MeasureValue.objects.get(org=row.org, month=month)
    if (row.percentile is None) or np.isnan(row.percentile):
        row.percentile = None
    mv.percentile = row.percentile
    mv.save()

Это неудивительно довольно медленно. Есть ли эффективный способ Django ускорить его, сделав запись в одну базу данных вместо десятков тысяч? я имеюпроверил документацию, но не вижу никого.

Ответы на вопрос(1)

Ваш ответ на вопрос