Object Relational Mapping,即对象关系映射
使得Python编程人员不用直接编写SQL代码,可以像 *** 作对象一样仅用Python语言 *** 作数据库中的数据
Model模型用于描述数据,它包含了储存的数据的重要字段和行为。
每个模型都是一个 Python 的类,这些类继承了 django.db.models.Model
每一个模型都映射一张数据库表
模型类的每个属性都相当于一个数据库的字段 常用类型及属性介绍
函数名
类型
示例
通用属性
models.IntegerField()
整型
(-2147483648,2147483647)
primary_key
设置主键
True
null
值是否为null
True/False
blank
值是否为空
True/False
default
默认值
verbose_name
admin中显示的名字
db_column
数据库字段名
unique
唯一索引
True
db_index
普通索引
True
models.SmallIntegerField()
短整型
(-32768,32767)
models.BigIntegerField()
长整型
models.PositiveIntegerField()
正整型
(0,2147483647)
models.PositiveSmallIntegerField()
短正整型
(0,32768)
models.CharField()
字符串
'aqin'
max_length
字段长度
models.FloatField()
浮点型
8.88
models.DecimalField()
十进制小数
8.88888
max_digits
数字中允许的最大位数
decimal_places
存储的十进制位数
models.BooleanField()
布尔型
True/False
models.NullBooleanField()
可为空布尔型
True/False/None
models.TextField()
文本
'hello aqin'
models.EmailField()
邮箱
models.UrlField()
网址
'http://www.xxx.com'
models.DateField()
日期
(年-月-日 )
2022-02-02
auto_now
时间自动添加
True
auto_now_add
时间自动添加(仅在创建的时候添加一次)
True
models.DateTimeField()
日期
(年-月-日 时:分:秒)
2022-02-02 12:12:12
models.TimeField()
日期
(时:分:秒)
12:12:12
models.ImageField()
图片
width_field
图片宽
height_field
图片高
upload_to
上传图片的本地路径
models.FileField()
文件
任意文件类型
upload_to
上传文件的本地路径
models.py中的代码:
from django.db import models # 基于类的数据库模型 # 继承内置的ORM(models.Model) class User(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=20, unique=True, blank=False) age = models.IntegerField(default=0) phone_number = models.EmailField(blank=True, default='') # 创建时添加 created_time = models.DateTimeField(auto_now_add=True) # 更新时变更时间 modified_time = models.DateTimeField(auto_now=True)2. 创建迁移脚本文件
查找所有可用的模型,为任意一个在数据库中不存在对应数据表的模型创建迁移脚本文件
python manage.py makemigrations
(tutorial-env) aqin1012@aqin1012deMBP mysite % python manage.py makemigrations Migrations for 'app': app/migrations/0001_initial.py - Create model User3. 创建数据库表
运行上一步python manage.py makemigrations生成的迁移脚本来自动创建数据库表
python manage.py migrate
(tutorial-env) aqin1012@aqin1012deMBP mysite % python manage.py migrate Operations to perform: Apply all migrations: admin, app, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying app.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying sessions.0001_initial... OK
完成撒花
ps:本文主要参考Django官方文档[笔芯.gif][笔芯.gif][笔芯.gif]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)