Mam modelkę
class Survey(models.Model):
created_by = models.ForeignKey(User)
question = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.question
a teraz chcę zaktualizować tylko active
pole. Więc robię to:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Teraz pojawia się błąd IntegrityError: PRIMARY KEY must be unique
.
Czy mam rację z tą metodą aktualizacji?
django
django-models
django-views
django-database
zarejestrowany użytkownik
źródło
źródło
.get
zamiast.filter
i to nie działa. Ale z filtrem działa dobrze. Czy wiesz, co jest nie tak z moim kodem powyżej?question_id
. Skąd ta wartość? A która dokładnie linia podnosiIntegrityError
?question_id
pochodzi z adresów URL(?P<question_id>\d+)
. Moja wina polegała na tym, że na działającym serwerze jest zainstalowane django 1.4, a mój kod to 1.5. Ale z twoim kodem działa dobrze.save()
(rozwiązanie @Alasdair) jest bezpieczniejszym rozwiązaniem, ponieważ ta metoda może wyzwalać takie rzeczy, jak walidacja lub dowolny niestandardowy kod, niżupdate()
nie.