day4-Django的model

news/2024/11/18 13:59:24/

目录

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_nameadmin显示的名字
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教程


http://www.ppmy.cn/news/51938.html

相关文章

Promise的状态和方法

Promise的状态 初始状态 -> pending   初始状态可以改变   在resolve 或者 reject 调用之前都处于这个状态 最终成功状态 -> fulfilled   执行 resolve 函数,状态改变为 fulfilled   执行 onFulfilled 函数 最终失败状态 -> rejected   执行 re…

安装配置 ZLMediaKit

一、ZLMediaKit 库简介 ZLMediaKit 是一个基于 C11 的高性能运营级流媒体服务框架 官方写的项目特点: 基于 C11 开发,避免使用裸指针,代码稳定可靠,性能优越。 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4…

Android性能优化—ViewPagers + Fragment缓存优化

大家看标题,可能会有点儿懵,什么是ViewPagers,因为在很久之前,我们使用的都是ViewPager,但是现在更多的是在用ViewPager2,因此用ViewPagers(ViewPager、ViewPager2)来代替两者&#…

mysql常用规范

常用规范总结 表、存储过程、视图要有统一的命名规范,例如:表以t_打头,存储过程以sp_打头,视图以v_打头; 数据库和表的字符集用UTF8,如有emoji表情包的需求,必须使用UTF8MB4。 数字类型不要用…

Linux: 进程间通信机制

文章目录 1. 前言2. 进程间通信机制2.1 管道2.1.1 匿名管道2.1.2 popen() 和 pclose()2.1.3 命名管道 FIFO 2.2 消息队列2.3 共享内存2.4 信号量2.5 网络套接字2.6 UNIX套接字2.7 信号 3. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给…

京东商品列表数据采集(APP,H5端)

采集场景: 在京东搜索页 https://search.jd.com/Search 输入搜索,搜出后得到的多个商品列表数据。 征地: 商品名称、价格、评论数、店铺名称、店铺链接等字段。 采集结果: 采集结果可导出为Excel,CSV,HTML,数据库等格式。导出…

TensorFlow高阶API和低阶API

TensorFlow提供了众多的API,简单地可以分类为高阶API和低阶API. API太多太乱也是TensorFlow被诟病的重点之一,可能因为Google的工程师太多了,社区太活跃了~当然后来Google也意识到这个问题,在TensorFlow 2.0中有了很大的改善。本文…

在线甘特图制作教程

在线甘特图制作教程 很多的甘特图工具都是需要下载到本地,并且做好了之后也不方便分享给别人。给大家分享一个在线的甘特图制作工具 不需要登录注册 知竹甘特图 https://www.yxsss.com/ 打开知竹甘特图 https://www.yxsss.com/gatt/3b7d1ecb7211b9473e7d1ecb72 …