Консоль администратора Django - Разобрать строку в DateField - PullRequest
0 голосов
/ 28 марта 2012

В настоящее время в нашей базе данных поле даты вводится в виде строки (например: 7/7/2009).Есть ли в моем файле models.py файл для преобразования этого поля, скажем, из TextField в DateField, чтобы в консоли администратора пользователь мог выбрать дату в представлении календаря, а не вводить ее вручную?Возможно, разобрать его на лету?

date = models.TextField()

конвертировать в ..

date = models.DateField()

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

После изменения столбца в MSSQL на тип даты у нас все еще была та же проблемаЯ должен был также упомянуть, что мы использовали pyodbc для поддержки нашего сервера.Мы внесли изменения в код pyodbc в файле operation.py.Тип-кроме был добавлен.

 def convert_values(self, value, field): 
    .......
  elif field and field.get_internal_type() == 'DateField':
        try:
            value = value.date() # extract date
       #ADDED THE FOLLOWING TO CATCH THE ERROR
        except AttributeError:
            value = datetime.datetime.strptime(value, '%Y-%m-%d').date() 

После того, как мы добавили это, в консоли администратора django отображался виджет Календарь.

0 голосов
/ 28 марта 2012

Лучше всего начать правильно хранить данные. Для этого вам нужно изменить таблицу, добавив новое поле (в базе данных) с типом даты. Выполните синтаксический анализ существующих данных даты из поля char в это новое поле, а затем, наконец, измените таблицу, чтобы удалить поле char и соответствующим образом переименовать поле временного значения

Этот процесс можно упростить, используя django-south для управления миграциями. Вам потребуется 3 миграции: схема миграции для добавления временного поля, миграция данных для преобразования данных, схема миграции для удаления старого столбца и переименования нового.

Вы можете попробовать использовать пользовательскую форму в админке ... вы можете форсировать конвертацию во время выполнения, но на самом деле это не очень хорошая идея, так как вам действительно следует правильно хранить данные. Ранее я использовал пользовательские формы в админке, но не для этого, поэтому я не уверен, сработает ли это.

...