2010-11-27 6 views

Antwort

7

Erstellen Sie ein anderes Modell, das eine Zeichenfolge mit einer optionalen Reihenfolge enthält, geben Sie eine ForeignKey an myClass zurück, und speichern Sie Ihr Array dort.

+7

Ist das nicht eher ineffizient? – Andrew

+0

Wenn Sie sich nie darum kümmern müssen, was die Saiten sind, sicher. Sobald Sie sich kümmern, werden Sie mehr Struktur wollen. –

9

Sie können einige Serialisierungsmechanismen wie JSON verwenden. Es ist ein Ausschnitt mit Felddefinition, die für Sie von Nutzen sein könnte:

http://djangosnippets.org/snippets/1478/ (werfen Sie einen Blick auf den Code in dem letzten Kommentar)

Mit einem solchen Feld können Sie nahtlos Strings in eine Liste setzen und ordnen sie zu einem solchen Feld. Die Feldabstraktion erledigt den Rest. Das Gleiche gilt für das Lesen.

+0

Ich verwende oft serialisierte JSON-Daten: Beachten Sie jedoch, dass es sich um ein SQL-Antipattern http://www.pragprog.com/titles/bksqla/sql-antipatterns handelt, obwohl es einige rechtmäßige Verwendungen gibt. –

4

Sie können cPickle verwenden ...

class myClass(models.Model): 
    title = models.CharField(max_length=50) 
    stringArr = models.TextField() 

from cPickle import loads, dumps 
data = [ { 'a':'A', 'b':2, 'c':3.0 } ] 
obj = Myclass.objects.get(pk=???) 
# pickle data into a string-like format 
obj.stringArr = dumps(data) 
obj.save() 
# restore original data 
data = loads(obj.stringArr) 
+1

Sie können dies auch auf ein PickleField verallgemeinern oder das auf pypi verwenden: http://pypi.python.org/pypi/django-picklefield/ –

Verwandte Themen