11 ORM简介

编辑本博客

yuan先生博客

创建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
    }
}
View Code

Django默认导入的是MySQLdb,但是MySQLdb在py3上支持有问题,py3用pymysql,所以需要在项目__init__.py文件中添加如下代码

import pymysql
pymysql.install_as_MySQLdb()
View Code

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',
        },
    }
} 
View Code
原文地址:https://www.cnblogs.com/yaya625202/p/9240519.html