django-cms: Page Meta daten ändern...

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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:

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"
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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten