2017-02-01 8 views
0

Мне нужно хранить данные, часть из них предопределена, но пользователь может выбрать ее. Каков наилучший способ хранения этих данных в базе данных?База данных изменяемое поле

  1. 2 поля, 1 будет целое поле для предварительно заданной опции, а второй будет строка для ввода пользовательских пользователя
  2. 1 строка поля, которая будет содержит JSON как {предопределены: 2, пользовательских: ''}
  3. 1 строковое поле, которое будет содержать пользовательскую строку или предопределенный идентификатор опции (преобразованный во время процесса запроса)
  4. 1 строковое поле, которое будет содержать полнотекстовую опцию, даже если она является предопределенной (некоторые из этих предопределенных опций могут длинный текст)

Я попробовал 1), но удвоил количество полей для каждой «готовой» информации, кажется, не идеально ...

Любая идея?

+0

Пример будет приятным. Какую версию Django и какую RDBMS вы используете? – Risadinha

ответ

0

Учитывая что вам может понадобиться следующее (это не очень понятно из Вашего вопроса):

  1. форма, где есть поле ввода для настраиваемой части строки
  2. простой способ обратиться к полная строка
  3. способ администрирования/управления/проверки неизменяемую строку

=> использовать два поля:

class TheModel(Model): 
    # if you have a certain constant number of choices, use ChoiceField 
    # otherwise use a ForeingKey and create a different model for those 
    non_customizable_prefix = ChoiceField(null=False, blank=False, ...) 
    # unique? validators? max/min length? null/blank? 
    customizable_part = CharField(...) 

    @property 
    def complete_string(self): 
     return '{}{}'.format(self. non_customizable_prefix, self. customizable_part) 

Эта модель предоставит вам два отдельных поля ввода в формах Django или администратор Django, предлагая простые способы сделать только non_customizable_prefix или только с некоторыми изменениями с некоторыми привилегиями.

 Смежные вопросы

  • Нет связанных вопросов^_^