重新再写一次,Django会默认觉得我们已经往表中

报错:

bug one:

You are trying to add a non-nullable field 'height' to person without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py

问题描述:当数据库表已经建立完成之后,再往models.py该表格所对应的类中再次添加新的字段,然后执行python manage.py makemigrations时,就会产生该bug。

具体原因:当我们创建表完成后,Django会默认觉得我们已经往表中添加了数据。当添加了一个新的字段的时候,表中已经存在的记录也都同时多了这个新添加的字段,但是赋给这个字段什么值Django不知道怎么办了,所以我们需要给这个新字段添加一个默认值。

解决办法:

1.

You are trying to add a non-nullable field 'height' to person without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option: 2   这里选择2 

2.刚才新添加的字段给个默认值。default='默认值'。

 

bug one:

You are trying to add a non-nullable field 'height' to person without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py

问题描述:当数据库表已经建立完成之后,再往models.py该表格所对应的类中再次添加新的字段,然后执行python manage.py makemigrations时,就会产生该bug。

具体原因:当我们创建表完成后,Django会默认觉得我们已经往表中添加了数据。当添加了一个新的字段的时候,表中已经存在的记录也都同时多了这个新添加的字段,但是赋给这个字段什么值Django不知道怎么办了,所以我们需要给这个新字段添加一个默认值。

解决办法:

1.

You are trying to add a non-nullable field 'height' to person without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option: 2   这里选择2 

2.刚才新添加的字段给个默认值。default='默认值'。

 

You are trying to add a non-nullable field 'SKU' to product without a default; we can't do that (the database needs something to populate existing rows).

python 的web 框架django 模型中常用的Field,这些Field可用的参数、常见错误原因及处理方案。

You are trying to add a non-nullable field 'BookName' toBookInfo without a default; we can't do that (the database needs something to populate existing rows).

Please select a fix:

根据这些Field就可以在mqsql,sqlite3等数据库中生成对应数据表。

Please select a fix:

 1) Provide a one-off default now (will be set on all existing rows)

1) Provide a one-off default now (will be set on all existing rows)

 2) Quit, and let me add a default in models.py

  1. django 模型models 常用字段

2) Quit, and let me add a default in models.py

Select an option: 1

1、models.AutoField

原因:

Please enter the default value now, as valid Python

自增列 = int(11)

在模型类中添加了一个非空字段,而该模型类对应的表中,已经存在数据,而这些现存的数据并没有新增字段的值

The datetime and django.utils.timezone modules are available, so you can do e.g.

如果没有的话,默认会生成一个名称为 id 的列

timezone.now()

如果要显式的自定义一个自增列,必须设置primary_key=True。

>>> timezone.now()

2、models.CharField

 

字符串字段

如何还是不断重复上述提示,那么就该model的字段删除,重新再写一次,

必须设置max_length参数

然后

3、models.BooleanField

python3 manage.py makemigrations

布尔类型=tinyint(1)

python3 manage.py migrate

不能为空,可添加Blank=True

..........

4、models.ComaSeparatedIntegerField

 

用逗号分割的数字=varchar

继承CharField,所以必须 max_lenght 参数

5、models.DateField

日期类型 date

DateField.auto_now:保存时自动设置该字段为现在日期,最后修改日期

DateField.auto_now_add:当该对象第一次被创建是自动设置该字段为现在日期,创建日期。

6、models.DateTimeField

日期时间类型 datetime

同DateField的参数

7、models.Decimal

十进制小数类型 = decimal

DecimalField.max_digits:数字中允许的最大位数

DecimalField.decimal_places:存储的十进制位数

8、models.EmailField

一个带有检查 Email 合法性的 CharField

9、models.FloatField

浮点类型 = double

10、models.IntegerField

整形

本文由必威发布于必威-编程,转载请注明出处:重新再写一次,Django会默认觉得我们已经往表中

相关阅读