Ich habe ein Modell
class Survey(models.Model):
created_by = models.ForeignKey(User)
question = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.question
und jetzt möchte ich nur das active
Feld aktualisieren . Also mache ich das:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Jetzt bekomme ich eine Fehlermeldung IntegrityError: PRIMARY KEY must be unique
.
Bin ich mit dieser Methode zum Aktualisieren richtig?
quelle
.get
statt versucht.filter
und das funktioniert nicht. Aber mit Filter funktioniert es gut. Wissen Sie, was mit meinem obigen Code nicht stimmt?question_id
. Woher kommt dieser Wert? Und welche genaue Linie erhöht dieIntegrityError
?question_id
kommt von URLs(?P<question_id>\d+)
. Mein Fehler war, dass auf dem funktionierenden Server Django 1.4 installiert ist und mein Code 1.5 ist. Aber mit Ihrem Code funktioniert es gut.save()
(@ Laslasair-Lösung) eine sicherere Lösung, da diese Methode möglicherweise eine Validierung oder einen benutzerdefinierten Code auslöstupdate()
.