Aktualisieren Sie nur bestimmte Felder in einem models.Model
Habe ich 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 will ich update nur die active
Feld. Also ich mache Folgendes:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Nun bekomme ich eine Fehlermeldung IntegrityError: PRIMARY KEY must be unique
.
Bin ich Recht mit dieser Methode zu aktualisieren?
InformationsquelleAutor der Frage Registered User | 2012-12-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktualisieren einer Teilmenge von Feldern, die Sie verwenden können,
update_fields
:Den
update_fields
argument wurde Hinzugefügt, in Django 1.5. In früheren Versionen konnten Sie verwenden, dieupdate()
Methode statt:InformationsquelleAutor der Antwort Alasdair
In der Regel, den richtigen Weg für die Aktualisierung bestimmte Felder in einem oder mehreren Modell-Instanzen zu verwenden, die
update()
- Methode auf die jeweiligen queryset. Dann tun Sie etwas wie dieses:Diese Weise brauchen Sie nicht zu rufen
save()
auf Ihr Modell mehr, weil es wird automatisch gespeichert. Auch dieupdate()
Methode gibt die Anzahl der Umfrage-Instanzen, die betroffen waren, durch das update.InformationsquelleAutor der Antwort pemistahl