Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django迁移集默认不工作_Python_Mysql_Django - Fatal编程技术网

Python django迁移集默认不工作

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

我使用的是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_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语句来设置默认值)。