2010-11-27 3 views

Répondre

7

Créez un modèle qui contient une chaîne avec une commande facultative, remettez-lui un ForeignKey à myClass, et stockez votre tableau là-dedans.

+7

est-ce pas plutôt inefficace? – Andrew

+0

Si vous n'avez jamais à vous soucier de ce que sont les cordes, bien sûr. Dès que vous vous souciez, vous allez vouloir plus de structure. –

9

Vous pouvez utiliser un mécanisme de sérialisation tel que JSON. Il y a un extrait avec la définition de champ qui pourrait être utile pour vous:

http://djangosnippets.org/snippets/1478/ (un coup d'oeil au code dans le dernier commentaire)

Avec ce champ, vous pouvez parfaitement mettre les chaînes dans une liste et les affecter à ce domaine. L'abstraction sur le terrain fera le reste. La même chose avec la lecture.

+0

J'utilise souvent des données sérialisées JSON: sachez cependant qu'il s'agit d'un SQL Antipattern http://www.pragprog.com/titles/bksqla/sql-antipatterns, bien qu'il existe des utilisations légitimes. –

4

Vous pouvez utiliser cPickle ...

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

Vous pouvez également généraliser ceci à un PickleField, ou utiliser celui sur pypi: http://pypi.python.org/pypi/django-picklefield/ –

Questions connexes