Как сохранить массив строк в модели Django?

Я создаю модель данных Django, и я хочу иметь возможность хранить массив строк в одной из переменных; как я могу это сделать?

например.

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

Спасибо за помощь.

Ответы

Ответ 1

Сделайте еще одну модель, содержащую строку с необязательным порядком, верните ее ForeignKey в myClass и сохраните там свой массив.

Ответ 2

Вы можете использовать некоторый механизм сериализации, такой как JSON. Там есть фрагмент с определением поля, который может вам пригодиться:

http://djangosnippets.org/snippets/1478/ (посмотрите код в последнем комментарии)

С таким полем вы можете легко помещать строки в список и назначать их в такое поле. Абстракция поля сделает все остальное. То же самое с чтением.

Ответ 3

Вы можете использовать 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)

Ответ 4

Если вы используете PostgreSQL или MongoDB (с djongo), вы можете сделать это

Для PostgreSQL:

from django.contrib.postgres.fields import ArrayField

Для MongoDB (с Джонго):

from djongo import models
from django.contrib.postgres.fields import ArrayField

затем

stringArr = ArrayField(models.CharField(max_length=10, blank=True),size=8)

Вышеуказанное работает в обоих случаях.