PickledObject

In einer Datenbank einen Wert zu speichern, der sich erst während der Laufzeit entscheidet, war schon seit jeher ein relativ schweres Unterfangen, da Datenbanksysteme keine dynamische Typisierung der Spalten unterstützen. Darum behilft man sich meist, indem man die zu speichernden Daten serialisiert und in einem Textfeld speichert.

Dieser Weg funktioniert auch in Django. Zur Serialisierung verwendet man das Modul "cPickle" bzw. "pickle". Möchte man die (Un-)Serialisierung transparent gestalten, empfielt sich, einen neuen Feld-Typ zu schaffen. Möchte man zudem die Möglichkeit haben, die Daten des Feldes mit dem im "newforms"-Branch mitgelieferten neuen Administrationsmenü zu editieren, benötigt man noch weitere Form- und Widget-Klassen.

Diese habe ich entwickelt und ein PickledObjectField geschaffen, dass man in eigenen Datenbankmodellen verwenden kann. Die (Un-)Serialisierung erfolgt transparent und im Administrationsbereich hat man Zugriff auf die abgelegten Daten und kann diese verändern.

ACHTUNG: Ich übernehme keine Haftung für durch in diese Datei verursachte Schäden, Fehler oder Sicherheitslücken! Die Benutzung erfolgt ausschließlich auf eigene Gefahr!

Um die Klassen zu verwenden muss man einfach diese Datei herunterladen und an der gegebenen Stelle importieren. Dann hat man Zugriff auf PickledObjectField und kann dieses verwenden.

Tags: Django