Django DateTimeField

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
BerlinerMC
User
Beiträge: 25
Registriert: Montag 8. Dezember 2008, 19:32

Hallo Community,

heute habe ich folgendes Problem welches ich nicht verstehe!
Also ich möchte ganz gerne das ein DateTimeField sich immer automatisch aktualisiert wenn der Datensatz aktualisiert wird.
Also folgende Modeldefinition:

Code: Alles auswählen

class Test(models.Model):
     count                      =   models.IntegerField()
     time                       =   models.DateTimeField(auto_now=True)
     objects                    =   TestManager()
So nun habe ich auch noch folgenden Manager:

Code: Alles auswählen

class TestManager(models.Manager):

    def updateTest(self, id, newNumber):
        self.filter(pk = id).update(count = newNumber)
Wenn ich nun den Manager aufrufe, dann aktualisiert er zwar den Wert für count, aber nicht den Wert für time -.-

Aber es müsste doch so richtig sein?!

Version Django 1.2 pre-Alpha

Liebe Grüße
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

das auto_now=True bedeutet nur, dass beim Anlegen das aktuelle Datum eingetragen wird. Wenn Du das Datum später aktualisieren willst, musst Du das selbst machen.
http://www.felix-benner.com
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

tordmor hat geschrieben:das auto_now=True bedeutet nur, dass beim Anlegen das aktuelle Datum eingetragen wird. Wenn Du das Datum später aktualisieren willst, musst Du das selbst machen.
Nein, "auto_now_add" würde dies bewirken. Bei Verwendung von "auto_now" sollte in der Tat jedesmal, wenn der Datensatz gesichert wird, das DateTimeField aktualisiert werden.
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

kbr hat geschrieben: Nein, "auto_now_add" würde dies bewirken. Bei Verwendung von "auto_now" sollte in der Tat jedesmal, wenn der Datensatz gesichert wird, das DateTimeField aktualisiert werden.
Ah, natürlich, mein Fehler.
http://www.felix-benner.com
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Vlt sollte dein Manager noch speichern ;) auto_now wird natürlich erst beim save() Aufruf gesetzt…
BerlinerMC
User
Beiträge: 25
Registriert: Montag 8. Dezember 2008, 19:32

apollo13 hat geschrieben:Vlt sollte dein Manager noch speichern ;) auto_now wird natürlich erst beim save() Aufruf gesetzt…
Das hatte ich auch vermutet aber auch hier habe ich leider keinen Erfolg!
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Nunja, dann können wir dir bei dem bisschen Code, den du gezeigt hast, auch nicht wirklich helfen. Ich hab grad im Djangosource nachgeschaut, das ganze geschieht im pre_save und geht sicherlich…
BerlinerMC
User
Beiträge: 25
Registriert: Montag 8. Dezember 2008, 19:32

Kommt ein bisschen spät, jedoch hatte ich keine Chance weiter zu Programmieren an meiner Webseite. Also ich habe es nun hinbekommen!

Und zwar so:

Code: Alles auswählen

class TestManager(models.Manager):

    def updateTest(self, id, newNumber):
        test = self.filter(pk = id)
        test.count = newNumber
        test.save()
Ich finde es ein bisschen umständlich aber nun gut....

Liebe Grüße
Antworten