Django中ORM常用字段类型及参数配置的示例分析-创新互联

这篇文章将为大家详细讲解有关Django中ORM常用字段类型及参数配置的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联公司服务项目包括金湖网站建设、金湖网站制作、金湖网页制作以及金湖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,金湖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到金湖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

一、数值型

  • AutoField对应int(11)。自增主键,Django Model默认提供,可以被重写。

  • BooleanField对应tinyint(1)。布尔类型字段,一般用于记录状态标记。

  • DecimalField对应decimal。开发对数据精准要求较高大的业务时考虑使用。比如:cash=models.DecimalField(max_length, decimal_places=2, default=0, verbose_name=“消费金额”),就是定义长度为8位、精度位2位的数字,例如数字:666666.66。

  • IntergerField对应**int(11) **。同AutoField一样,唯一的差别就是不自增。

  • PositiveIntegerField。同IntegerField,只包含正整数。

  • SmallIntegerField对应smallint。小整数时一般会用到。

二、字符型

django对应到Mysql中有两种类型:longtext和varchar。

除了TextField是longtest类型外,其他属于varchar类型。

  • CharField对应varchar。基础的varchar类型。

  • URLField.继承自CharField,但是实现了对URL特特殊处理。用来存储URL数据,非URL数据可以在业务层就拒绝掉,不会存入数据库中。

  • UUIDField对应char(32)。除了在PostgreSQL中使用的是uuid类型外,在其他数据库中均是固定长度char(32),用来存放生成的唯一id。

  • EmailField。同URLfield一样继承自CharField,多了对email的特殊处理。

  • FileField。同URLField一样,它继承自CharField,对了对文件的特殊处理。

  • TextField对应longtext。一般用于存放大量文本内容,比如新闻正文、博客正文。

  • ImageField。继承自FileField,用来处理图片相关的数据,在展示上会有所不同。

三、日期类型

django中有3中日期类型,分别对应Mysql的date、datetime和time

  • DateField对应date

  • DateTimeField对应datetime

  • TimeField对应time

四、关系类型

  • ForeignKey,外键

  • OneToOneField,一对一

  • ManyToManyField,多对多

五、参数

上面django所提供的字段都是类。

比如models.CharField的定义就是:class CharField:。

每个字段里面都提供了参数可以选择:

  • null。可以同blank进行对比。null用于设定在数据库层面是否允许为空

  • blank。针对业务层面,该值是否允许为空。

  • choices。配置字段的choices后,在admin页面上就可以看到对应的可选项展示。

  • db_column。默认情况下,定义的field就是对应数据库中的字段名称,通过这个参数可以指定Model中的某个字段对应数据库中的哪个字段。

  • db_index。数据库索引配置。

  • default。默认值配置。

  • editable。是否可编辑,默认是True。如果不想这个字段显示在页面上,可以配置为False。

  • error_messages。用来自定义字段值校验失败时的异常提示,它是字典格式。key的值可选项为null、blank、invalid、invalid_choice、unique和unique_for_date。

  • help_text。字段提示语,配置这一项后,在页面对应字段的下方会展示此配置。

  • primary_key。主键,一个Model只允许设置一个字段为primary_key。

  • unique。唯一约束,当需要配置唯一值时,设置unique=True,设置此项后,不需要设置db_index。

  • unique_for_date。针对date(日期)的联合约束。比如说一天只能写一篇博文,即:unique_for_date=“博文”

  • unique_for_month。针对月份的联合约束 。

  • unique_for_month。针对年份的联合约束。

  • verbose_name。字段对应的展示文案。

  • validators。自定义校验逻辑,同form类似。

关于Django字段类型中 blank和null的区别

blank

设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。

如果为True,字段允许为空,默认不允许。

null

设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。

如果为True,空值将会被存储为NULL,默认为False。

如果想设置BooleanField为空时可以选用NullBooleanField型字段。

一句话概括

  • null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。

  • blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填,比如 admin 界面下增加 model 一条记录的时候。直观的看到就是该字段不是粗体

  • 通俗点说,该字段null=true后,你进行插入,修改操作时可以为空,然后Django把空值转换成null存在数据库中,而blank只是在表单验证的时候会检测你是否可以为空

关于“Django中ORM常用字段类型及参数配置的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:Django中ORM常用字段类型及参数配置的示例分析-创新互联
新闻来源:http://ybzwz.com/article/dcepsg.html