目录
1)setting文件配置
2)理解models
3)model定义
4)常用字段类型
5)常用属性
6)数据库迁移
7)Meta类
1)setting文件配置
sqlite数据库:
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',} }
mysql数据库:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'bbs', # 数据库名称'USER': 'root','PASSWORD': 'dtj2794998378','HOST': '127.0.0.1','PORT': '3306',} }
2)理解models
所有的Model都必须继承自django.db.models.Model,可以是直接继承或者间接继承,所有字段都是 djaogo.db.models.Field的子类,Django会根据field的类型确定数据库中表字段的类型
3)model定义
from django.db import models from ckeditor_uploader.fields import RichTextUploadingField # Create your models here. from user.models import User class Article(models.Model):title = models.CharField('标题', max_length=20)# 发行时间pub_time = models.DateTimeField('发表时间',auto_now_add=True)# 内容content = RichTextUploadingField(verbose_name="内容",blank=False,null=False)# 用户iduser = models.ForeignKey(User, on_delete=models.CASCADE)class Meta:db_table = 'article' # 修改表名
4)常用字段类型
字段名 | 描述 | 举例 |
---|---|---|
CharField | 字符串类型 | |
TextField | 文本类型 | |
EmailField | 邮箱类型 | |
UrlField | 网址类型 | |
BooleanField | 布尔类型 | |
IntegerField | 整型 | |
DecimalField | 浮点类型 | |
FloatFie1d | 十进制小数类型 | |
DateField | 日期类型 | xxxx-xx-xx |
DateTimeField | 日期类型 | xxxx-xx-xx xx:xx:xx |
TimeField | 时间类型 | xx:xx:xx |
ImageField | 图片类型 | xxx.jpg |
FileField | 文件类型 | 任意文件 |
ForeignKey | 多对一 | 相当于外键 |
OneToOneField | 一对一 | 用于拓展模型 |
ManyToManyField | 多对多 |
5)常用属性
特殊属性
字段名 | 描述 | 作用于 |
---|---|---|
max_digits | 数字中的最大位数 | DecimalField |
decimal_places | 存储的十进制位数 | DecimalField |
height_field width_field | 图片的宽和高 | ImageField |
upload_to | 保存上传文件的本地路径 | FileField ImageField |
related_name | 多对一和多对多字段反向引用的字段名 |
公共属性
字段名 | 描述 | 作用于 |
---|---|---|
null | 是否可设为空 | |
blank | 是否设为空 | |
primary_key | 设置主键 | IntegerField |
auto_now | 时间自动添加 | TimeField |
auto_now_add | 时间自动添加,仅仅在创建的时候 | TimeField |
max_length | 字段长度 | CharField |
default | 默认值 | |
verbose_name | admin显示的名字 | |
db_column | 数据库字段名 | |
unique | 唯一索引 | |
db_index | 普通索引 | |
6)数据库迁移
对模型的更改同步到数据库
生成迁移文件 :python3 manage.py makemigrations
执行迁移脚本: python3 manage.py migrate 该操作会同步到数据库
7)Meta类
通常是定义在model里的内部类,模型的元数据,指的是“除了字段外的所有内容”,例如排序方式、数据库表名、人类可读的单数或者复数名等等。例如:
from django.db import models class Ox(models.Model):horn_length = models.IntegerField() class Meta: # 注意,是模型的子类,要缩进!ordering = ["horn_length"]verbose_name_plural = "oxen"
常用属性:
属性名 | 含义 | 样例 |
---|---|---|
ordering | 排序 | ["horn_length"],列表,-horn_length表示降序 |
abstract | 被设置位抽象模型,不生成数据表 | abstract=True |
db_table | 数据库中的数据表名 | |
unique_together | 唯一联合索引 | unique_together=['day','hour'] |
index_together | 普通联合索引 | |
constraints | 约束条件 | constraints = [ models.CheckConstraint(check=models.Q(age__gte=18), name='age_gte_18'), ] |
verbose_name | 字段标签名 | verbose_name = "披萨",通常用于展示 |
参考:django 模型的元数据Meta - 刘江的django教程