Eu tenho uma modelo
class Survey(models.Model):
created_by = models.ForeignKey(User)
question = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.question
e agora quero atualizar apenas o active
campo. Então eu faço isso:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Agora recebo um erro IntegrityError: PRIMARY KEY must be unique
.
Estou certo com este método de atualização?
fonte
.get
vez de.filter
e não funcionou. Mas com filtro funciona bem. Você sabe o que há de errado com meu código acima?question_id
. De onde vem esse valor? E qual linha exata aumenta oIntegrityError
?question_id
vem de urls(?P<question_id>\d+)
. Minha falha foi que no servidor de trabalho o django 1.4 está instalado e meu código é 1.5. Mas com seu código está funcionando bem.save()
(solução @Alasdair) é uma solução mais segura, porque esse método pode acionar coisas como validação ou qualquer código personalizado doupdate()
que não.