模型
## 定义模型 在app/models.py中定义模型 ```python from django.db import models # 定义模型类 class Title(models.Model): # 定义模型字段 id = models.IntegerField(primary_key=True) title = models.CharField(max_length=50) time = models.DateTimeField() def __str__(self): return self.title # 后台管理页面显示的标题 class Meta: verbose_name = '标题' verbose_name_plural = '标题' ``` ## 注册模型 将模型注册到后台,早app/admin.py中注册 ```python from .models import * from django.contrib import admin # 注册Title到后台 @admin.register(Title) class TitleAdmin(admin.ModelAdmin): # 后台显示的字段 list_display = ['id', 'title', 'time'] ``` ## 字段类型 ```python # int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 AutoField # 布尔字段,值为True或False Booleanfield # 支持Null、True、False三种值 NullBooleanField # 字符类型,必须提供max_length参数, max_length表示字符长度。 CharField # 大文本字段,一般超过4000个字符时使用 TextField # 一个整数类型,范围在 -2147483648 to 2147483647。 IntegerField # 十进制浮点数 , 参数maxdigits表示总位数, 参数decimalplaces表示小数位数 Decimalfield # 浮点数 FloatField # 日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。 DateField # 时间,参数同date TimeField # 日期时间字段,格式 YYYY-MM-DD HH:MM:ss[.uuuuuu],相当于Python中的datetime.datetime()实例。 DateTimeField # 上传文件字段 FileField # 继承于FileField,对上传的 内容进⾏行行校验,确保是有效的图⽚片 imageField ``` ## 字段选项 ```python # 如果为True,表示允许为空,默认值是False null # 如果为True,则该字段允许为空白,默认值是False blank # 字段的名称,如果未指定,则使用属性的名称 db_column # 若值为True, 则在表中会为此字段创建索引,默认值是False db_index # 默认 default # 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用 primary_key # 如果为True, 这个字段在表中必须有唯一值,默认值是False unique # (时间字段独有)配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。 auto_now_add # (时间字段独有)配置上auto_now=True,每次更新数据记录的时候会更新该字段。 auto_now ``` ## 外键字段 ```python # 一对一 OneToOneField # 一对多 ForeignKey # 多对多 ManyToManyField # 示例 title = models.ForeignKey(Title, on_delete=models.CASCADE) ``` ## on_delete选项 当删除关联表中的数据时,当前表与其关联的行的行为。 ```python # 删除关联数据,与之关联也删除 models.CASCADE # 删除关联数据,引发错误IntegrityError models.DO_NOTHING # 删除关联数据,引发错误ProtectedError models.PROTECT # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_NULL # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值) models.SET_DEFAULT # 删除关联数据,与之关联的值设为指定值 models.SET # 是否在数据库中创建外键约束,默认为True。 db_constraint ```
创建时间:2023-03-26
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链