Django开发博客系统(04-常用字段与属性)

Django models中常用的字段类型

数值型

这些类型都是数值相关的.

AutoField int(11). 自增主键,Django Model默认提供,可以被重写.完整定义是

id = models.AutoField(primary_key=True)

BooleanFueld tinyint(1). 布尔类型字段,一般用于记录状态标记.

DecimalField decimal. 开发对数据精度要求高的业务时考虑使用,比如做支付相关,金融相关.定义时需要指定精确到多少位,例如

case = models.DecimalField(max_digits=8, decimal_places=2, default=0)

定义长度为8, 精度为2的数字.

IntegerField int(11) 整型,用于保存一个整数

PositiveIntegerField 只包含正整数

SmallIntegerField smallint. 小整数时会用到

字符型

这些字段都是用来存储字符数据的,对应到MySQL中有两种类型:longtext和varchar.

CharField varchar  基础的varchar类型

URLField 继承自CharField,实现了对URL的特殊处理,会预先检查URL是否存在且有效

UUIDField char(32) 用来存放生成的唯一id

EmailField 类似于URLField,对E-mail的特殊处理

FileField 同URLField, 多了对文件的特殊处理,必须参数是upload_to

TextField longtext 一般用于存放大量文本内容,比如新闻正文,博客正文.

ImageField 继承自FileField, 会判断路径是否是图片,可以设置图片保存的宽高(width_file,height_field)

FilePathField 选择指定目录按限制规则选择文件

  • path:必须参数,一个目录的绝对路径
  • match:可选参数,一个正则表达式,用它来过滤文件名
  • recursive:可选参数,是否包括path下的全部子目录,默认为False

日期类型

DateField  日期类型YYYY-MM-DD

  • auto_now = True每次更新都会更新这个时间
  • auto_now_add = True则只是第一次创建添加,之后更新不做改变

DateTimeField 日期类型 YYYY-MM-DD hh:mm:ss 参数与DateField相同

TimeField 日期类型hh:mm:ss

关系类型

ForeignKey 一对多

OneToOneField 一对一

ManyToManyField 多对多,会创建一个中间表.

Model常用参数

null 用于设定在数据库层面是否允许为空

blank 针对表单提交时是否允许为空

  • 个人理解,null=True在数据库中是NULL,而blank=True则是在表单提交时可以为空,但在数据库中则是‘‘.在文章填写摘要时就需要用到这个.

choices 配置后,在admin页面可以看到对应的可选项展示

db_column 可以指定Model中的某个字段对应数据库中的哪个字段

db_index 索引配置.

default. 默认值

editable 是否可编辑, 默认为True, 如果不想把此字段展示到页面上则可以配置为False

error_messages 字典格式,用来自定义字段值校验失败时的异常提示.key可以是null, blank, invalid, invalid_choice, unique和unique_for_date.

help_text 字段提示语.在页面对应字段下方会展示

primary_key 主键.

unique. 唯一约束

unique_for_date 针对date的联合约束

verbose_name. 字段对应的展示文案

validators. 自定义校验逻辑

此处只是一些简单的总结,同时可能会有部分地方有错误,毕竟我知识有限,完整资料请参考官方文档

原文地址:https://www.cnblogs.com/ylnx-tl/p/12604564.html

时间: 2024-10-24 16:01:32

Django开发博客系统(04-常用字段与属性)的相关文章

Django开发博客系统(01-前言与需求分析)

原本是跟着视频学,无奈发现视频中用到的资源找不到,于是自己买了本书来进行学习,贴上JD链接.<Django企业开发实战> 我的开发环境是win10+python3.8+django3.0.4,而书上是在linux环境下进行开发的,= =(汗),先这样学下去吧,毕竟面向百度编程.写博客也是为了督促一下自己,毕竟在家里宅着容易学着学着就玩手机去了.. 书前面还有一些入门知识,这里我就直接跳到做项目的部分了. 目标是开发一个博客系统, 需求分析: 简单来说,博客分为两个部分:读者访问部分(用户端)和

Django开发博客系统(08-路由配置与views编写)

我们需要的页面: l  博客首页 l  博文详情页 l  分类列表页 l  标签列表页 l  友链展示页 但实际上,博客首页,分类列表页和标签列表页,本质上都是文章列表页,只有一些信息有差别.那么View大概就有三类: l  列表页: 根据不同的查询条件分别展示博客首页,分类列表页和标签列表页 l  博文详情页: 展示博文详情页 l  友链展示页: 展示所有友情链接 书上使用的环境是django1.11.1,而我使用的是3.0.4,所以路由我使用path来写,并且把路由分散开来写,让代码分工能明

Django开发博客系统(07-根据需求定制管理后台)

运行系统尝试添加用户并添加数据,出现的效果 可以看到当前登录的用户虽然是DOCTOR,但依然可以看到其他用户的文章,而且过滤器上也展示了非当前用户创建的分类,显然这是一个需要我们解决的问题. 首先解决右侧过滤器的功能,这时需要自定义过滤器,这里贴上文档中的说明 接下来我们就来编写自定义过滤器的代码: 1 class CategoryOwnerFilter(admin.SimpleListFilter): 2 """自定义过滤器只展示当前用户分类""&quo

Django开发博客系统(11-使用xadmin)

这段时间进行了前端页面的美化,实现了搜索功能与评论功能,以及配置了rss和sitemap,不过这些东西后期可能还会进行大改,所以暂时不准备讲,可能完成之后会一起说一下...吧. 另外这里贴上我的源码,不过还没有完成,有兴趣可以去看看. 今天将后台的admin替换为了xadmin,xadmin是国人创建的一个开源项目,作者github,这个项目简单来说可以完全无痛地替换admin,同时增加很多有用的功能,界面也是基于Bootstrap,相较自带的更美观. 先来看看最终完成的效果图吧 接下来就进行x

Django开发博客系统(05-QuerySet的使用)

在Model层中,Django通过objects属性来提供数据操作的接口, 比如我们想要查询所有文章的数据,只需要 Post.objects.all() 他会返回一个QuerySet对象,当我们需要用到它时,它会去db中获取数据,注意是用到的时候才会去查,而不是定义的时候去查,原因是QuerySet要支持链式操作,如果每次执行都要查询数据库的话,会影响性能,假设我要查询所有文章中状态为正常的文章,有如下代码. posts = Post.objects.all() available_posts

Django开发博客(基础篇)

Django开发博客(基础篇)http://www.itmin.cn/archives/918

Django开发博客- 部署

安装Git Git是一个被大量程序员使用的”版本控制系统”.此软件可以跟踪任何时间文件的改变,这样你以后可以随时召回某个特定版本. windows系统下面可以下载git-scm安装.除了第5步”Adjusting your PATH environment”, 需要选择”Run Git and associated Unix tools from the Windows command-line”(底部的选项).除此之外,默认值都没有问题. Linux系统的安装使用包管理器安装 123 sudo

Django开发博客 入门篇

Django是神马? Django是一个开源免费的Web框架,使用Python编写.能够让你快速写出一个Web应用, 因为它包含了绝大部分的组件,比如认证,表单,ORM,Session,安全,文件上传,页面模板等,避免了重复造轮子. 官方网站:https://www.djangoproject.com/ 笔者写这篇教程的时候,最新版本是1.9 安装Django1.9 安装python虚拟环境 为了开发应用的时候使用单独的环境,最好是安装virtual environment, 这样有很好的独立性

Django开发博客- 三部曲

其实在django中实现一个功能只需要三个步骤即可,这里我姑且叫它三部曲. 这三部曲就是: 定义urls映射 定义views 定义templates 什么是URL? URL就算一个WEB地址,你在浏览器输入这个地址,然后浏览器返回相应的网页给你. 比如http://djangogirls.com是一个URL,而127.0.0.1:8000同样也是个URL,默认就是http协议的. Django中的URL工作原理 我们打开mysite/urls.py文件,会发现类似下面这样: 1234567891