У меня есть модель
class Survey(models.Model):
created_by = models.ForeignKey(User)
question = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.question
и теперь я хочу обновить только active
поле. Итак, я делаю это:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Теперь я получаю ошибку IntegrityError: PRIMARY KEY must be unique
.
Правильно ли я с этим методом обновляюсь?
источник
.get
вместо,.filter
и это не работает. Но с фильтром все работает нормально. Вы знаете, что не так с моим приведенным выше кодом?question_id
. Откуда взялось это значение? И какая именно линия поднимаетIntegrityError
?question_id
исходит из URL-адресов(?P<question_id>\d+)
. Моя ошибка заключалась в том, что на рабочем сервере установлен django 1.4, а мой код - 1.5. Но с вашим кодом все работает нормально.save()
(решение @Alasdair) является более безопасным решением, потому что этот метод может запускать такие вещи, как проверка или любой пользовательский код, чемupdate()
нет.