Dango 常用字段和参数

一、Django ORM 常用字段和参数

1.常用字段

models中所有的字段类型其实本质就那几种,整形varchar什么的,都没有实际的约束作用,虽然在models中没有任何限制作用,但是还是要分门别类,对于校验性组件校验非常有用
就比如说邮箱类型,你在输入邮箱的时候如果不按照邮箱格式输入,瞎鸡儿输入会提示你不合法,虽然输入的是字符串,但是不是规定的邮箱字符串

AutoField()  【int primary key auto_increment)】 int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。

IntegerField()  【int()】一个整数类型,范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够),直接用字符串存

CharField()  【varchar()】 字符类型,必须提供max_length参数, max_length表示字符长度。

DateField()   【date】日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。

DateTimeField()   【datetime】日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例

EmailField()   【varchar(254)】其实就是varchar但是不能直接写成varchar,就比如男人女人都是人,但是必须说清楚,后面会用于校验性组件的校验

BooleanField()
  is_delete = BooleanField()
  给该字段传值的时候 你只需要传布尔值即可
  但是对应到数据库 它存的是0和1
TextField()
  - 文本类型用来存大段文本
FileField()
  - 字符串,路径保存在数据库,文件上传到指定目录
  - 参数:
      upload_to = "path" 用户上传的文件会自动放到等号后面指定的文件路径中
      storage = None 存储组件,默认django.core.files.storage.FileSystemStorage

自定义char:

Django中的CharField对应的MySQL数据库中的varchar类型,没有设置对应char类型的字段,

但是Django允许我们自定义新的字段,下面我来自定义对应于数据库的char类型

自定义字段在实际项目应用中可能会经常用到

2.字段参数

null  用于表示某个字段可以为空。

unique  如果设置为unique=True 则该字段在此表中必须是唯一的 。

db_index  如果db_index=True 则代表着为此字段设置索引。

default  为该字段设置默认值。

DateField和DateTimeField:

  uto_now_add  配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。

  auto_now  配置上auto_now=True,每次更新数据记录的时候会更新该字段

3.choices字段

在很多时候我们往数据库中存数据的时候不会直接存储汉字,会采用数字存取代替汉字,减小内存,

我们使用choices来给数字绑定注释关系,后期取出来的时候用固定语法取出注释,如:1表示男,我们取出来的时候取出男并不是取出数字1

1.绑定关系choices=((1,'男'),(2,'女'),(3,'其他'))
gender = models.IntegerField(choices=choices)
2.取choice里面罗列的数字与中文对应关系:
                固定语法:
                get_字段名_display()
                如:print(user_obj.get_gender_display())

3. 取没有罗列出来的数字
             不会报错,会展示数字,数字是多少就展示多少

二、数据库优化查询

1.update()与save()的区别

两者都是对数据的修改保存操作,但是save()函数是将数据列的全部数据项全部重新写一遍,效率极低,比如book_obj.save()会将对象所有属性重新保存一次

而update()则是针对修改的项进行针对的更新效率高耗时少,比如,update(price),指哪打哪只会保存价格这一个属性

所以以后对数据的修改保存用update()

2.惰性查询

查询集 是惰性执行的 —— 创建查询集不会带来任何数据库的访问。你可以将过滤器保持一整天,直到查询集 需要求值时,Django 才会真正运行这个查询。

queryResult=models.Article.objects.all() # 只写这一句不会请求数据库

print(queryResult) # 直到你需要结果,此时才会查询数据库

for article in queryResult:
    print(article.title)    # 这样也会查询

orm内所有的语句操作 都是惰性查询:只会在你真正需要数据的时候才会走数据库,如果你单单只写orm语句时不会走数据库的
这样设计的好处 在于 减轻数据库的压力

3.only和defer 两对头

#only only会将括号内的所有的字段信息 全部查询出来封装对象中

res = models.Book.objects.only('title')
            for r in res:
            # print(r.title)  # 只走一次数据库查询,将查询到的所有信息封装成一个对象,随后查询这些信息不需要再请求数据库,直接可以用点方法从对象中取出
              print(r.price)
            # 当你点击一个不是only括号内指定的字段的时候 不会报错 而是会帮你去数据库查询,循环几次查几次,频繁的走数据库查询,当你有成千上万条信息时对数据库造成一万点伤害

#defer defer会将不是括号内的所有的字段信息 全部查询出来封装对象中

 res1 = models.Book.objects.defer('title')  # defer与only是相反的
            for r in res1:
            # print(r.title)# 查询括号内的字段,会频繁的走数据库查询
            print(r.price)#查询括号内没有的,只走一次

4. select_related 与 prefetch_related 两兄弟

res = models.Book.objects.all()
   for r in res:
      print(r.publish.name) #查询N次,这样是跨表查询,循环一次访问一次数据库,有一千万个书籍就查询一千万次#常规的all方法,查询自己表里没有的属性,就需要跨表查询,虽然可以获取,但是你去查询一次就会访问一次数据库,查询其他表就不推荐这个了#查询自己表里面有的属性时可以使用

#select_related 主动关联表

1. 主要针一对一和多对一关系进行优化。
2. 使用SQL的JOIN语句进行优化,通过减少SQL查询的次数来进行优化、提高性能

原文地址:https://www.cnblogs.com/luodaoqi/p/11750561.html

时间: 2024-10-07 14:21:15

Dango 常用字段和参数的相关文章

Django ORM中常用字段和参数

Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 这里需要知道的是Django中的CharFiel

Django框架之模型层 常用字段和参数

目录 一.Django ORM 常用字段和参数 1.1 常用字段 1.2 所有字段(争取记忆) 1.2.1 orm字段与MySQL字段对应关系 1.3 自定义字段 1.3 字段参数 1.3.1 DateField和DateTimeField的字段参数 二.关系字段 2.1 ForeignKey 2.1.1 字段参数 2.1.2 其余字段参数 2.2 OneToOneField 2.2.1 字段参数 2.3 ManyToManyField 2.3.1 字段参数 一些说明: 表的名称是自动生成的,如

ORM常用字段和参数

ORM常用字段和参数 一.ORM字段 1. AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. 2. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. 3. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 4. DateField 日期字段,日期格式 YYYY-MM-DD,相当于Python中的da

orm 常用字段及参数

一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定 primary_key=True 即可.如果Django发现你已经明确地设置了Field.primary_key,它将不会添加自动ID列. 本示例中的CREATE TABLE SQL使用PostgreSQL语法进行格式化,但值

ORM常用字段及参数

目录 ORM常用字段及参数 ORM常用字段 ORM字段参数 关系字段 必知必会13条 13个必会操作总结 ORM常用字段及参数 ORM常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_len

models常用字段及参数,orm查询优化, choices参数及实际应用

一.自定义字段类型 from django.db import models # Create your models here. # 自定义CHAR类型 from django.db.models import Field class RealCharField(Field): # 这里是要继承Field类的 def __init__(self, max_length, *args, **kwargs): self.max_length = max_length # 拦截一个父类的方法 操作完

Django ORM常用字段及参数

目录 Django ORM常用字段及参数 models中的常用字段 字段内的关键字参数 数据库查询优化(面试问题) Django ORM如何开启事务操作 MTV与MVC模型(了解) Django ORM常用字段及参数 models中的常用字段 models中常用字段与数据库中的对应关系 models中常用字段 数据库对应字段 AutoField(primary_key=True) 主键字段 CharField(max_length=32) varchar(32) IntegerField() i

python3开发进阶-Django框架的ORM常用字段和参数

阅读目录 常用字段 字段合集 自定义字段 字段参数 关系参数 多对多的关联关系的三种方式 一.常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.  (最大十位) CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,

Django ORM 常用字段和参数

一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例. DateTim