第十四周-第一节课
字段类型
有限使用, 尽量使用和数据库一致的数据类型
-
BooleanField
代表true或者false, 也就是代表1和0;
-
IntegerField
-
BigIntField
-
FloatField
-
DecimalField
-
CharField
在mysql中对应的就是varchar, 所以必须指定长度 name = models.CharField(max_length=200)
-
TextField
遇到大的文本和图片, 文件. 推荐做法是存当前的URI或者URL, 然后通过路径从静态资源服务器, 文档数据库或者云服务器中获取该文件
-
DateField
-
DateTimeField
-
AutoField
如果没有指定主键, 当前模型会自动将一个自增id的
IntegerField
做为主键. -
ImageField
-
EmailField
当前django提供用来做特殊约束和校验的字段.
-
UUIDField
一般来说, uuid会用作当前数据表的主键
字段选项/约束
-
primary_key
将当前字段设置为主键
id = models.AutoField(max_length=191, primary_key=True)
-
null
默认为False, 如果为True, 当前字段可以为NULL.
-
blank
代表空白字符
""
, 默认为False, 如果是True, 当前字段允许为空password = models.CharField(max_length=200, blank=False)
-
unique
默认为False, 如果为True, 重复记录会报错
-
default
默认值
-
时间类型字段
-
auto_now_add
create_time = models.DateTimeField(auto_now_add=True)
-
auto_now
update_time = models.DateTimeField(auto_now=True)
-
创建测试应用myblog
class Person(models.Model):
name = models.CharField(max_length=200, primary_key=True)
email = models.EmailField()
update_time = models.DateTimeField(auto_now=True)
create_time = models.DateTimeField(auto_now_add=True)
null_test = models.CharField(max_length=200, null=True)
blank_test = models.CharField(max_length=200, blank=True)
调试
-
修改
manage.py
进行debug调试print(sys.argv) # sys.argv = ['manage.py', 'migrate'] execute_from_command_line(sys.argv)
-
修复
migrations
执行
python manage.py migrate
命令其实是按顺序执行未同步的migrations.- 更改
migrations
中的文件解决问题 - 删除
migrations
文件推倒重来django
会在数据表django_migrations
中创建同步记录- 删除对应的同步记录
- 如果有创建表的记录, 需要删除表
- 更改