2015-07-07 6 views
0

Какой тип поля я использовал бы для хранения следующего в моей базе данных MySQL, используя models.Model?models.Model field type для списка строк

SURVEY_URLS = ['/surveyone/', '/surveytwo/', '/surveythree/', '/surveyfour/', '/surveyfive/', '/surveysix/', '/surveyseven/', '/surveyeight/', '/surveynine/'] 

Я смотрел на Djangos model field field types но ничего не кажется очевидным.

и поиск вариантов «Джанго Как хранить список в models.Model» и т.д. не показывает мне что-нибудь очевидное

+0

Будет ли большой список? Вы хотите выполнить сложный поиск базы данных по списку? Или вы просто хотите сохранить его как тупой список? –

ответ

1

Вы должны сделать шаг назад и пересмотреть свой дизайн. Я считаю, что у вас есть бизнес-объект «опроса». Поэтому, если ваша модель является опросом, это URL-адрес будет атрибутом (так же как и его счет и т. Д.).

class Survey(models.Model): 
    url = models.CharField(max_length=25) 
    count = models.PositiveSmallIntegerField(default=0) 
    ... 

Но вообще не будет на самом деле поместить URL в модели в поле- URL-адрес будет получен из чего-то другого, как это имя. Затем django url dispatcher передаст имя в представление, которое будет выполнять поиск, чтобы получить правильный обзор.

В любое время, когда вы находите себя жестким кодом one, two, three, ... почти всегда есть намного лучший способ сделать это. Не просто поддерживать 9 жестко запрограммированных обследований - поддерживайте обзоры n (где n может составлять 1 000 000).

1

просто преобразовать список в JSON строку и сохранить в TextField

yourobject.yourfield = json.dumps(SURVEY_URLS) 
yourobject.save() 

для получения списка обратно:

import ast 
list_again = ast.literal_eval(yourobject.yourfield) 
Смежные вопросы