Обновляйте только определенные поля в моделях.Модель


у меня есть модель

class Survey(models.Model):
    created_by = models.ForeignKey(User)
    question = models.CharField(max_length=150)
    active = models.NullBooleanField()
    def __unicode__(self):
        return self.question

и теперь я хочу обновить только

2 53

2 ответа:

для обновления подмножества полей можно использовать update_fields:

survey.save(update_fields=["active"]) 

The способ:

Survey.objects.filter(pk=survey.pk).update(active=True)

обычно правильным способом обновления определенных полей в одном или нескольких экземплярах модели является использование update() метод на соответствующем наборе запросов. Затем вы делаете что-то вроде этого:

affected_surveys = Survey.objects.filter(
    # restrict your queryset by whatever fits you
    # ...
    ).update(active=True)

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