Django模型迁移小错误

Django操作ORM小笔记

报错内容:

You are trying to add a non-nullable field 'mobile' to user without a default; we can't do that (the database needs something to popula te existing rows). Please select a fix:

  1. Provide a one-off default now (will be set on all existing rows with a null value for this column)
  2. Quit, and let me add a default in models.py Select an option:

models.py内容如下:

1from django.db import models 2from django.contrib.auth.models import AbstractUser 3 4class User(AbstractUser): 5 mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号') 6 class Meta: 7 db_table = 'users' 8 verbose_name = '用户' 9 verbose_name_plural = verbose_name 10 def __str__(self): 11 return self.username

这个模型类继承了AbstractUser类,这个类默认提供了很多属性,比如username、first_name、email等,但是没有mobile属性。

因此这里的mobile是我们自己加的。

当新加的mobile属性这样写时:

mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号')

由于没有指定该字段的默认值,即没有指定这个字段是否可以为空,所以django会有这样的提示。

解决方案:

方案①

输入1,手动指定默认值为当前时间(timezone.now为带时区的当前时间,格式:2015-07-10 14:11:19.936835+00:00),迁移就会继续。

1$ python manage.py makemigrations 2 3You are trying to add a non-nullable field 'mobile' to user without a default; we can't do that (the database needs something to popula 4te existing rows). 5Please select a fix: 6 1) Provide a one-off default now (will be set on all existing rows with a null value for this column) 7 2) Quit, and let me add a default in models.py 8Select an option: 1 9Please enter the default value now, as valid Python 10The datetime and django.utils.timezone modules are available, so you can do e.g. 11 12timezone.now 13 14Type 'exit' to exit this prompt 15>>> timezone.now 16Migrations for 'user': 17 easybook/apps/user/migrations/0006_user_mobile.py 18 - Add field mobile to user 19 20$ python manage.py migrate

方案②

输入2,退出当前对话,返回修改mobile属性的指定方式:

1mobile = models.CharField(max_length=11, unique=True, null=True, verbose_name='手机号') # 增加null=True,即允许此字段为空 2 3 4$ python manage.py makemigrations 5Migrations for 'user': 6 easybook/apps/user/migrations/0008_user_mobile.py 7 - Add field mobile to user 8$ python manage.py migrate
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )