2014-11-21 3 views
0

, пожалуйста, помогите, что-то странное происходит.Как изменить базу данных после смены модели?

У меня была модель:

class Feedback(models.Model): 
    username = models.CharField(
     verbose_name=u"Имя", 
     max_length=100, 
     blank=True, 
    ) 
    subject = models.CharField(
     verbose_name=u"Тема", 
     max_length=100, 
     blank=False, 
    ) 
    email = models.EmailField(
     verbose_name=u"Email", 
     max_length=100, 
     blank=True, 
    )  
    message = models.TextField(
     verbose_name=u'Сообщение', 
     max_length=50000, 
     blank=False, 
    )   
    date = models.DateTimeField(
     verbose_name=u'Дата создания', 
     default=datetime.now(), 
     auto_now=True, 
    ) 

на его основе, я создал форму обратной связи. она работала. Я создал несколько сообщений, а затем удалить все записи из соответствующей таблицы в базе данных

я изменил имена полей:

class Feedback(models.Model): 
    username_f = models.CharField(
     verbose_name=u"Имя", 
     max_length=100, 
     blank=True, 
    ) 
    subject_f = models.CharField(
     verbose_name=u"Тема", 
     max_length=100, 
     blank=False, 
    ) 
    email_f = models.EmailField(
     verbose_name=u"Email", 
     max_length=100, 
     blank=True, 
    )  
    message_f = models.TextField(
     verbose_name=u'Сообщение', 
     max_length=50000, 
     blank=False, 
    )   
    date_f = models.DateTimeField(
     verbose_name=u'Дата создания', 
     default=datetime.now(), 
     auto_now=True, 
    ) 

и сделал следующее из консоли:

(kinopom_env)[email protected] ~/.virtualenvs/kinopom_project/kinopom $ python manage.py schemamigration --auto app_menu 

результат был следующим:

- Deleted field username on app_menu.Feedback 
- Deleted field date on app_menu.Feedback 
? The field 'Feedback.message' does not have a default specified, yet is NOT NULL. 
? Since you are removing this field, you MUST specify a default 
? value to use for existing rows. Would you like to: 
? 1. Quit now. 
? 2. Specify a one-off value to use for existing columns now 
? 3. Disable the backwards migration by raising an exception; you can edit the migration to fix it later 
? Please select a choice: 

помогите пожалуйста исправить т он ситуации и объясняет, что происходит

ответ

2

Юг пытается решить, как создать обратную миграцию - другими словами, как бы это отбросило ваши изменения. Если вы счастливы, что никогда не захотите откатить эту миграцию, вы можете просто выбрать вариант 3.

Если вы хотите откат, то посмотрите на this post - это объясняет, как переименовать поле модели (в данном случае message - message_f).

1

Это нормально, вы должны выбрать вариант 2 и ввести значение по умолчанию, если вы не планируете использовать обратные миграции, это может быть любое, например «0». Если вы продолжите обратную миграцию, удаленные поля будут созданы заново, и они будут заполнены этими значениями по умолчанию.

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