Python django迁移集默认不工作
我使用的是Django版本1.8.3和mysql版本5.6.21 mysql社区服务器(GPL) 我一直在尝试为用户登录实现数据库,如下所示Python django迁移集默认不工作,python,mysql,django,Python,Mysql,Django,我使用的是Django版本1.8.3和mysql版本5.6.21 mysql社区服务器(GPL) 我一直在尝试为用户登录实现数据库,如下所示 is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) 但是当我在上面执行manage.py migrate时,我得到了 BEGIN; ALTER TABLE `login_user` ALTER COLUMN `is_acti
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
但是当我在上面执行manage.py migrate
时,我得到了
BEGIN;
ALTER TABLE `login_user` ALTER COLUMN `is_active` SET DEFAULT 1;
ALTER TABLE `login_user` ALTER COLUMN `is_active` DROP DEFAULT;
ALTER TABLE `login_user` ALTER COLUMN `is_admin` SET DEFAULT 0;
ALTER TABLE `login_user` ALTER COLUMN `is_admin` DROP DEFAULT;
COMMIT;
我不明白为什么它会设置默认值,然后将其删除。
有人能告诉我这里发生了什么事吗
多谢各位
编辑:我已经添加了迁移文件
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='User',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('first_name', models.CharField(max_length=50)),
('last_name', models.CharField(max_length=50)),
('email', models.EmailField(max_length=50)),
('password', models.CharField(max_length=50)),
('is_active', models.BooleanField()),
('is_admin', models.BooleanField()),
('created_at', models.DateTimeField(auto_now_add=True)),
('num_friends', models.PositiveSmallIntegerField()),
('bio', models.CharField(max_length=150)),
('my_photo', models.ImageField(upload_to=b'profile')),
],
options={
},
bases=(models.Model,),
),
]
class Migration(migrations.Migration):
dependencies = [
('login', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='user',
name='is_active',
field=models.BooleanField(default=True),
),
migrations.AlterField(
model_name='user',
name='is_admin',
field=models.BooleanField(default=False),
),
]
mysql> desc login_user;
+-------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(50) | NO | | NULL | |
| last_name | varchar(50) | NO | | NULL | |
| email | varchar(50) | NO | | NULL | |
| password | varchar(50) | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
| is_admin | tinyint(1) | NO | | NULL | |
| created_at | datetime(6) | NO | | NULL | |
| num_friends | smallint(5) unsigned | NO | | NULL | |
| bio | varchar(150) | NO | | NULL | |
| my_photo | varchar(100) | NO | | NULL | |
+-------------+----------------------+------+-----+---------+----------------+
11 rows in set (0.00 sec)
你能显示Django创建的迁移文件吗?@Alasdair Yap。我刚刚添加了一个。请注意,Django没有在SQL中设置默认值(请参阅)。话虽如此,我无法解释为什么迁移会设置默认值,然后将其删除。@Alasdair感谢您的回复。那么您的意思是在django模型中指定默认值什么都不做?如果是这样的话,我该如何着手解决这个问题呢?不,我不是说默认值什么都做不了。Django使用默认值,但不更新模式。请记住,默认值可以是可调用的,这意味着可能无法在模式中设置它。如果只使用orm创建对象,那么可能不必担心默认值。如果您确实需要模式中的默认值,那么您需要以其他方式进行设置(手动迁移或手动输入SQL语句来设置默认值)。