使用Django定义模型类字段时常用字段详解

这篇具有很好参考价值的文章主要介绍了使用Django定义模型类字段时常用字段详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先要知道的是在定义好下述字段之后要在终端输入这两行命令执行迁移生成表喔~

python .\manage.py makemigrations
python .\manage.py migrate
1.models.CharField()

是django中最常见的字段, 用于存储字符串类型的数据

适用于定义名字/电话/地址/国家等等

  name = models.CharField(verbose_name='联系人', max_length=20)
2.models.TextField()

同样是django中的用于存储字符串类型的数据, 既然同是存储数据,那和CharField()有没有区别呢?

答案当然是有的啦~

A. 最大长度:CharField需要指定一个最大长度(max_length),用于定义数据库字段的长度。这是必需的。相反,TextField不需要最大长度参数。

B. 存储和检索效率:通常,如果你知道文本数据的长度将在一个相对较小的范围内,那么使用CharField可能更有效,因为数据库可以优化固定长度的字段的存储和检索。如果你需要存储大量的文本,如文章或评论,那么TextField可能更合适。

C. 用途:CharField通常用于较短的字符串,如名称、标题、城市等,而TextField通常用于较长或无限制长度的字符串,如博客文章、评论、描述等。

D. 表单渲染:在Django的表单中,CharField通常呈现为<input type="text">,而TextField呈现为<textarea>。这对用户输入数据的方式有很大影响

3.models.AutoField()

AutoField()的作用是默认生成列名为id的列,并设置为主键,常用于定义用户id,因为作为主键所以primary_key也成了他的必备参数,定义时切记不可忘记传入此参数。

当然主键django会默认自带

user_id = models.AutoField(primary_key = True)
4.models.BooleanField()

顾名思义,BooleanField()是django中的布尔类型字段, 常用于定义一个物品或者信息的状态。

例如商品是否被选中, 填写的地址电话号码是否为默认状态。

is_default = models.BooleanField(verbose_name='是否为默认地址', default=False)
5.models.DateField()

DateField()是django中的日期类型的字段

他与python里的datetime.date实例相同 不包含具体的时分秒 以天为单位计算时间。

值得注意的是他的两个参数:

参数1: auto_now,默认值为false,设置为true时,每次执行 save 操作时,将其值设置为当前时间,并且每次修改model,都会自动更新。

使用场景: 这个参数在需要存储“最后修改时间”的场景下,十分方便。 注意: 设置该参数为true时,并不意味着字段的默认值设为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django自带的admin管理器,那么该字段在admin中是只读的。

参数2: auto_now_add,默认值为false,设置为true时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。 使用场景: 该属性通常被用在存储“创建时间”的场景下。 注意: 一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。 auto_now和auto_now_add被设置为True后,这样做会导致字段成为editable=False和blank=True的状态。editable=False将导致字段不会被呈现在admin中,blank=Ture表示允许在表单中不输入值。

creat_time = models.DateField(auto_now_add=True, verbose_name='用户创建时间')
6.models.DateTimeField()

DateTimeField()是django中的日期+时间类型的字段

他的参数特性与DateField()相同,区别就是他会多出一个时间参数,更加具体。

因此就导致了他们使用场景的不同。

好比DateField()常用于定义用户创建时间,而DateTimeField()就常用于定义好比验证码生成的时间,因为验证码进行操作的时候几乎都是以秒或者分钟为单位,这个时候就用到了DateTimeField()

code_creat_time = models.DateField(auto_now_add=True, verbose_name='验证码生成时间')
7.models.DecimalField()

django中的十进制小数类型字段

# 必备参数:最大位数max_digits = 10 和小数位decimal_places = 2

常用于定义商品价格

price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='商品价格')
8.models.EmailField()

django中的电子邮箱字段 必须是email类型的数据

email = models.EmailField()
9.models.FloatField()

浮点类型字段,和DecimalField()类似,应用时要规定他的最大位数和小数位

数据类型为 float

floatNum = models.FloatField(max_digits = 10,decimal_places = 2)
10.models.IntegerField()

整数类型字段

数据类型为 int

intNum = models.IntegerField()
11.models.IPAddressField()

django中的IP字段,同EmailField类似。他存储的必须是IP类型的数据

Django Admin以及ModelForm中提供验证 IPV4 机制

IP = models.IPAddressField()
12.models.GenericIPAddressField()

与IPAddressField(),但是他的字段存储类型是可供选择的,它会根据必备参数:protocol (both,ipv4,ipv6)中的参数判断。

IP = models.GenericIPAddressField(protocol = both)
13.models.SlugField()

django中存储字符串类型的字段,但是字段必须包含减号、下划线、字母、数字,适用于复杂密码的定义

hardPassword = models.SlugField()
14.models.URLField()

django中存储url链接类型的字段,相似于IPAddressField(),保存字段必须为url类型

url = models.URLField()
15.models.ImageField()

django中图片类型的字段 作用是将图片保存为图片地址的形式,应用较为广泛。

image = models.ImageField()
16.models.FilePathField()

文件地址类型的字段,可以根据地址选择匹配文件。

必备的参数是path(文件的绝对路径)

file = models.FilePathField(path='绝对路径')
17.models.FileField()

文件上传功能字段

必备的参数是upload_to(文件的绝对路径)

file = models.FileField(upload_to='绝对路径')
18.models.PhoneNumberField()

11位电话号码字段

与CharField()添加了校验电话号码的功能,不过再目前的开发当中,电话号码的校验逻辑并不复杂,开发者大可以通过正则匹配在相应的视图函数中去校验手机号码,所以字段的使用也就较少了。

phone = models.PhoneNumberField()
19.总结

相信大家再掌握以上字段并熟悉他们的相关参数以后对定义模型类字段的书写就已经并不会感到困难了,但是实际开发中我们还是需要根据实际情况去进行变通。

例如我们在开发一个比较大的项目当中,可能不同的模型类中会出现多个相同的字段,届时我们就可以定义一个抽象类公共的字段,然后让不同的模型去继承它。(值得注意的是,抽象模型在执行迁移文件的时候是不会在数据库中生成表的)

当然相对于十分常见的字段,django也在AbstractUser中提供,我们也可以直接继承。文章来源地址https://www.toymoban.com/news/detail-831233.html

到了这里,关于使用Django定义模型类字段时常用字段详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Django学习】(十)模型序列化器_关联字段序列化

    这篇文章是针对模型类序列化器以及如何关联字段序列化 进行深入讲解的;  在上面的模型序列化类中: 可以继承ModelSerializer类或者ModelSerializer的子类,来创建模型序列化器类; 模型序列化器类中可以重新定义序列化器字段,优先级大于自动生成的同名字段 如果新定义的字

    2024年02月11日
    浏览(39)
  • Django的数据库操作模型的字段参数blank和null有什么区别?什么叫表单验证?

    在Django的数据库操作模型中,字段参数 blank 和 null 用于定义模型字段的验证规则和数据库约束。它们的区别如下: blank :这个参数用于验证表单数据的有效性。当字段的 blank 参数设置为 True 时,表明该字段可以为空值或者不填写任何内容,不会触发验证错误。换句话说,

    2024年02月11日
    浏览(30)
  • Django_模型类详解(七)

    目录 一、定义属性 字段类型 选项 二、查询集 两大特性 查询集的缓存 限制查询集 三、条件查询 条件运算符 1) 查询相等 2) 模糊查询  3) 空查询 4) 范围查询 5) 比较查询 6) 日期查询 F对象 Q对象 聚合函数  四、关联查询 通过对象执行关联查询 通过模型类执行关联查询 五、执

    2024年02月13日
    浏览(18)
  • 独立进程使用django模型(django.setup()使用)

    通过在独立进程中使用 Django 模型,你可以充分利用 Django 框架提供的数据库访问和模型层功能,更方便地进行数据处理、任务处理和与其他系统的集成。它提供了一种简单且高效的方式来利用 Django 强大的功能,并使你的代码更易于维护和扩展。 在独立进程的代码文件开头

    2024年02月13日
    浏览(26)
  • Django - 定时任务框架【django-apscheduler】基本使用详解(二)

    一个网页会有很多数据是不需要经常变动的,比如说首页,变动频率低而访问量大,我们可以把它静态化,这样就不需要每次有请求都要查询数据库再返回,可以减少服务器压力 我们可以使用Django的模板渲染功能完成页面渲染 APScheduler的全称是Advanced Python Scheduler。它是一个

    2024年02月12日
    浏览(33)
  • Django项目单字段的区间查询

    在Django项目中会碰到一些需求就是查询某个表中的一些字段从某日到某日的数据,而且是对但字段查询这个时候我们有两两种方法解决 单字段类型是DateTimeField的 查询日期范围的 这个时候在filter.py里面重写DateTimeFromToRangeFilter,为什么要重写呢? 因为我们做区间查询 起始与结

    2024年02月08日
    浏览(30)
  • 第五章 Django 数据模型系统(基本使用)

    第一章 Django 基本使用 第二章 Django URL路由系统 第三章 Django 视图系统 第四章 Django 模板系统 第五章 Django 数据模型系统(基本使用) 第六章 Django 数据模型系统(多表操作) 第七章 Django 用户认证与会话技术 第八章 Django CSRF防护 静态网站和动态网站是两种不同类型的网站,它们

    2024年02月04日
    浏览(34)
  • Django中使用反向关系名称(related_name)解决由“多对多”关系引起的字段名字冲突问题引起的迁移命令报错。

    当在模型中为关系字段添加了 related_name 参数后,您可以使用该参数指定的名称来引用反向关系。下面是一个简单的例子来说明如何引用反向关系。 假设您有以下两个模型: 在上面的例子中, Book 模型有一个外键字段 author ,它关联到 Author 模型。通过添加 related_name=\\\'books\\\' 参

    2024年02月16日
    浏览(34)
  • 在Django的数据库模型的类中,通常还会定义一个名叫Meta的内部类,这个类有什么作用?

    在Django的数据库模型中, Meta 类是一个内部类,用于定义一些与模型相关的元数据(metadata)。它提供了一种在模型类中指定各种选项和配置的方式。 以下是 Meta 类的一些常见用途和作用: 定义模型的数据库表名: 通过 db_table 选项可以指定模型对应的数据库表的名称。例如

    2024年02月12日
    浏览(43)
  • Django admin中展示字段设置外链

    假设有一个爬虫程序,它的主要作用是爬取一些新闻标题和该新闻的访问链接,总的来说数据项就两个: 新闻标题 访问链接(URL) 作为开发者我希望在Django admin页面中展示“访问链接”的字段能够直接点击访问,而不是复制下来再粘贴到浏览器中访问。 鉴于此,我需要给“

    2024年02月12日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包