常用字段类型
- django所有的数据模型都继承自models.Model
- CharField max_length (输入框)
- TextField 没有长度限制的字符串 (文本域)
- DateField 日期
- DateTimeField 日期+时间
- BooleanField 真假
- NullBooleanField Null,真假,
- Integer 整数
- PositiveIntegerField 正整数
- DecimalField max_digits(几位数) decimal_places(小数点后保留几位)
- ImageField 图片 依赖于 Pillow(处理图片) upload_to=‘upload’ 指定文件上传到目录
- FileField(ImageField继承FileField)
- AutoField
- ForeignKey 1:n
- ManyToManyField n:n
- EmailField 邮箱
- UUIDField 重复的概率非常低基本可以忽略,全世界都不一样的标示,uuid的产生和服务器的环境有关(CPU,网关,) 唯一性的标示,用户模块,订单号
- 不同的字段在后台对应不同的html的组件
ImageField 依赖于Pillow组件(python库)
常用属性
- unique 标示这个字段唯一
- default 默认的意思 ,(如果不写的话就使用默认的值)
- null=True 允许数据库层面该数据为null
- blank=True admin后台的表单层面可为空
- auto_now 针对时间的,自动调整当前,(当修改条目的时候,这个时间会自动更新),每次修改都会更新 (修改,保存的时候才会生效,)
- auto_now_add 针对时间的,只添加一次,(创建的时间)
重点理解属性
- 表单层面的东西(js判断字段是否是" "),不需要重写迁移数据库
- unique=True 可以任何字段
- default 数据库+表单层面(同时生效)
- auto_now_add 创建的时候会自动的添加时间(数据库),(后台表单层面找不到这个字段)
- auto_now 每次修改的时候自动更新,(数据库+表单层面)
- null=True 数据库层面,允许为Null,不是空字符串
- blank=True 表单层面的,后台选填(表单项元素可以为空,表单不会进行非空校验)
uuid
uuid.uuid4().get_hex() 【python2】
uuid.uuid4().hex 【python3】
django迁移失败如何处理
-
删除模块下的所有的迁移记录 migrations 0001文件
-
删除数据库中django_migrations表中问题模块的迁移记录
DELETE FROM django_migrations WHERE app='模块名'
-
删除这个模块下已经产生的所有的表
-
重新生成迁移文件
-
重新迁移