django-cms: Page Meta daten ändern...
Verfasst: Sonntag 19. Juli 2015, 22:47
Bei der migration von PyLucid auf django-cms möchte ich gern User + Datum einer Seite beibehalten... (Auch wenn man das ignorieren könnte)
Also müßte ich bei einer cms.models.Page Instanz die Felder created_by, creation_date, changed_by, changed_date ändern.
Kann man aber nicht so einfach setzten, weil in save() den User selber über _thread_locals.users setzt.
Außerdem nutzten die Zeit-Stempel auto_now / auto_now_add
Nun könnte ich RAW-SQL machen. Aber über das ORM ist mir das lieber...
Nun hab ich ein neues Model nur mit den Feldern gemacht, welches auf die selbe Tabelle zugreift:
Blöd ist, das ich explizit die Angaben in Meta hardcoden muß: Gibt es da eine bessere Lösung?!?
Ich hab auch versucht über ein Proxy Model zu gehen. Damit kann ich den User ändern, wenn ich explizit save() mit django.db.models.base.Model.save() ersetzte... Doch die Zeit-Stempel Felder kann ich dadurch nicht ändern. Ein temporäres ändern von auto_now/auto_now_add hat nicht funktioniert.
Aktuelle Lösung: https://github.com/jedie/PyLucid/commit ... f7ef66e0fe
Wie geht es einfacher?
Also müßte ich bei einer cms.models.Page Instanz die Felder created_by, creation_date, changed_by, changed_date ändern.
Kann man aber nicht so einfach setzten, weil in save() den User selber über _thread_locals.users setzt.
Außerdem nutzten die Zeit-Stempel auto_now / auto_now_add
Nun könnte ich RAW-SQL machen. Aber über das ORM ist mir das lieber...
Nun hab ich ein neues Model nur mit den Feldern gemacht, welches auf die selbe Tabelle zugreift:
Code: Alles auswählen
class PagePatchModel(models.Model):
created_by = models.CharField(max_length=70)
changed_by = models.CharField(max_length=70)
creation_date = models.DateTimeField()
changed_date = models.DateTimeField()
class Meta:
app_label="cms"
db_table = "cms_page"
Ich hab auch versucht über ein Proxy Model zu gehen. Damit kann ich den User ändern, wenn ich explizit save() mit django.db.models.base.Model.save() ersetzte... Doch die Zeit-Stempel Felder kann ich dadurch nicht ändern. Ein temporäres ändern von auto_now/auto_now_add hat nicht funktioniert.
Aktuelle Lösung: https://github.com/jedie/PyLucid/commit ... f7ef66e0fe
Wie geht es einfacher?