Unterschied zwischen Setattr und Objektmanipulation in Python / Django

Ich habe Folgendes Modell:

class Ticket(models.Model):
    title = models.CharField()
    merged_to = models.ForeignKey("self", related_name='merger_ticket', null=True, blank=True)
    looser_ticket = models.BooleanField(default=False)

Es gibt einige Möglichkeiten der Manipulation des Modells:

Ersten

ticket = Ticket.objects.get(pk=1)
ticket.title = "This is edit title"
ticket.merged_to_id = 2
ticket.looser_ticket = True

Zweiten

ticket = Ticket.objects.get(pk=1)
setattr(ticket, "title", "Edit Title")
setattr(ticket, "merged_to_id", 2)
setattr(ticket, "looser_ticket", True)

Wenn ich manipulierte das Zeug, in Aussicht für den booleschen Wert updation die erste Methode hat nicht funktioniert, aber die zweite Methode hat funktioniert. Was ist der Unterschied zwischen der Verwendung von ersten und zweiten, und Wann sollte Sie eingesetzt werden?

Dank!

Kommentar zu dem Problem - Öffnen
was meinst du mit "nicht funktionieren"? Kommentarautor: defuz
ah tatsächlich, da war ein Tippfehler, und die Werte wurden nicht in die Datenbank gespeichert. Kommentarautor: whatf

InformationsquelleAutor der Frage whatf | 2012-10-09

Schreibe einen Kommentar