前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

模型

作者头像
TomatoCool
发布2023-07-30 17:23:37
1890
发布2023-07-30 17:23:37
举报
文章被收录于专栏:TomatoCool

在app/models.py中定义模型

代码语言:javascript
复制
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中注册

代码语言:javascript
复制
from .models import *
from django.contrib import admin

#  注册Title到后台
@admin.register(Title)
class TitleAdmin(admin.ModelAdmin):
    #  后台显示的字段
    list_display = ['id', 'title', 'time']

字段类型:

代码语言:javascript
复制
#  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

字段选项:

代码语言:javascript
复制
#  如果为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

外键字段:

代码语言:javascript
复制
#  一对一
OneToOneField
#  一对多
ForeignKey
#  多对多
ManyToManyField

title = models.ForeignKey(Title, on_delete=models.CASCADE)

on_delete选项:当删除关联表中的数据时,当前表与其关联的行的行为。

代码语言:javascript
复制
#  删除关联数据,与之关联也删除
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 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档