创建models
数据类型
- AutoField:自增数据段
- CharField:字符串,max_length
- DateField:日期
- DecimalField:小数,max_digits,decimal_places
- FileField:upload_to='avatars/'文件保存目录,default='avatars/default.png'指定默认值
- ImageField
- verbose_name:别名
获取数据别名:
models.UserInfo._meta.get_field('title').verbose_name即可获取UserInfo表title字段的verbose_name
media文件配置见cnblog项目
FileField类型的参数和ImageField类型参数类似
- 必须接收文件对象,ImageField必须是图片。在传入文件对象的时候,django会自动下载该文件,并保存到upload_to文件夹中,如果没有改文件夹则自动创建
- 如果配置过media文件夹,则将文件保存在media文件夹下
- 在数据库中存放的是该文件的相对路径,而非文件对象
参数
- primary_key添加主键约束字段
- unique唯一性约束
- verbose_name详细显示名称
配置数据库
setting.py
DATABASES={ "default":{ "ENGINE":'django.db.backends.mysql', 'NAME':'orm', 'USER':'root', "PASSWORD":'123.com', 'HOST':'127.0.0.1', 'PORT':3306 } }
Django默认导入的是MySQLdb,但是MySQLdb在py3上支持有问题,py3用pymysql,所以需要在项目__init__.py文件中添加如下代码
import pymysql pymysql.install_as_MySQLdb()
INSTALLED_APP中注册app
由模型生产表
python manage.py makemigrations
python manage.py migrate
即迁移数据库
数据库中生成的表
打开ORM操作日志,需在setting中添加如下代码
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }