Я использую Django 1.7 с MySQL.Django BooleanField default for mysql
У меня есть существующая модель, к которой я хочу добавить BooleanField. Я хочу, чтобы в поле по умолчанию было значение true. Кажется, достаточно просто? Поэтому я создаю мое поле следующим образом:
class MyModel(models.Model):
my_field = models.BooleanField(default=True)
Тогда я бег makemigrations
и я получаю следующее миграции генерироваться:
operations = [
migrations.AddField(
model_name='mymodel',
name='myfield',
field=models.BooleanField(default=True),
preserve_default=True,
),
]
кажется законным, однако, когда я применяю миграцию поле, создаваемым в делает мою база данных не имеет значения по умолчанию, это выглядит следующим образом:
my_field tinyint(1) NOT NULL,
Теперь, когда я применяю миграции existin g имеет поле, установленное в 1, но я хочу, чтобы миграция создала поле, которое по умолчанию равно true, или 1. Что мне здесь не хватает? Может ли кто-нибудь пролить свет на то, что я делаю неправильно? Любой совет будет оценен, спасибо много!
Что происходит, когда вы создаете новую запись в MyModel и сохраняете ее? Устанавливает ли my_field значение True? –
@joelgoldstick - да, однако природа базы кода, с которой я работаю, не всегда использует ORM (мы переходим к Django, но есть еще устаревший код), поэтому я хочу, чтобы значение по умолчанию было установлено на db level – TheMethod
Итак, похоже, что django делает правильные вещи, но унаследованный код добавлен новые записи, которые не являются стандартными. Извините, я не могу думать об этом. Может быть, запустить задание cron, которое обновляет новые записи из вашего старого кода? –