Tengo un 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
y ahora quiero actualizar solo el active
campo. Entonces hago esto:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Ahora me sale un error IntegrityError: PRIMARY KEY must be unique
.
¿Estoy en lo cierto con este método para actualizar?
fuente
.get
lugar de.filter
y esto no funciona. Pero con el filtro funciona bien. ¿Sabes qué está mal con mi código anterior?question_id
. ¿De dónde proviene este valor? ¿Y qué línea exacta eleva elIntegrityError
?question_id
proviene de urls(?P<question_id>\d+)
. Mi culpa fue que en el servidor de trabajo django 1.4 está instalado y mi código es 1.5. Pero con tu código está funcionando bien.save()
(solución @Alasdair) es una solución más segura, porque este método puede desencadenar cosas como la validación o cualquier código personalizado queupdate()
no.