• Django中ORM模板常用属性讲解


    • 学习了ORM模板中常用的字段以及使用方法,具体如下:
    • from django.db import models
      
      # Create your models here.
      # 如果要将一个普通的类映射到数据库,必须设置其父类为models.Model
      class Book(models.Model):
          id = models.AutoField(primary_key=True)
          name = models.CharField(max_length=100, null=False)
          author = models.CharField(max_length=100, null=False)
          price = models.FloatField(null=False, default=0)
      
          def __str__(self):
              #  定义返回字符串的格式
              return "<Book:{name},{author},{price}>".format(name=self.name, author=self.author, price=self.price)
      
      
      class Publisher(models.Model):
          name = models.CharField(max_length=100, null=False)
          address = models.CharField(max_length=100, null=False)
      
      
      class Article(models.Model):
          # 如果想自己定义主键,primary_key=True,否则会自动生成id主键
          id = models.BigAutoField(primary_key=True)
          # removed = models.BooleanField(default=True)
          # 如果没有指明null=True,那么默认null=False,
          # 如果想要使用可以为null的BooleanField,那么应该使用NullBooleanField
          removed = models.NullBooleanField()
          # CharField 如果超过254个,不建议使用
          title = models.CharField(max_length=200, null=True)
      
          '''
             naive time: 不知道自己的时间是表示那个时区的时间 
             aware time: 知道自己的时间表示的是那个时区的
             pytz: 库在安装django的时候默认安装,专门用来处理时区的库
             astimezone:将一个时区的时间转化为另一个时区的时间,只能被aware time类型时间使用
             replace: 可以将上述的两种时间表示相互转换(now = now.replace(tzinfo= pytz.timezone(Asia/Shanghai)))
             django.utils.timezone.now(): 会根据’setting.py’中是否设置了‘USE_TZ=True’获取当前时间,如果设置了,那么就会获取到一个‘aware’类型的‘UTC’时间,如果没有,就会获取到一个‘navie’时间。
             django.utils.timezone.localtime(): 会根据’setting.py’中的‘TIME_ZONE'来将一个’aware‘类型的时间转化为‘TIME_ZONE'指定的时区的时间
          '''
      # auto_now_add=True:在第一添加数据的时候会自动获取当前时间 # auto_now: 每次这个对象调用save方法的时候(更改数据的时候会用到save),都会将当前的时间更新,在更新时间字段用得到 create_time = models.DateTimeField(auto_now_add=True) class Person(models.Model): # EmailField在数据库层面不会限制你存储的格式 email = models.EmailField() context = models.TextField()

        建立迁移文件命令:python manage.py makemigrations    迁移文件:python manage.py migrate

    • 常用字段: 在 Django 中,定义了一些 Field 来与数据库表中的字段类型来进行映射。以下将介绍那些常用 的字段类型。
    • AutoField: 映射到数据库中是 int 类型,可以有自动增长的特性。一般不需要使用这个类型,如果不指定主 键,那么模型会自动的生成一个叫做 id 的自动增长的主键。如果你想指定一个其他名字的并且具 有自动增长的主键,使用 AutoField 也是可以的。
    • BigAutoField: 64位的整形,类似于 AutoField ,只不过是产生的数据的范围是从 1-9223372036854775807 。
    • BooleanField: 在模型层面接收的是 True/False 。在数据库层面是 tinyint 类型。如果没有指定默认值,默认值 是 None 。
    • CharField: 在数据库层面是 varchar 类型。在 Python 层面就是普通的字符串。这个类型在使用的时候必须 要指定最大的长度,也即必须要传递 max_length 这个关键字参数进去。
    • DateField: 日期类型。在 Python 中是 datetime.date 类型,可以记录年月日。在映射到数据库中也 是 date 类型。使用这个 Field 可以传递以下几个参数: 1. auto_now :在每次这个数据保存的时候,都使用当前的时间。比如作为一个记录修改日期的 字段,可以将这个属性设置为 True 。 2. auto_now_add :在每次数据第一次被添加进去的时候,都使用当前的时间。比如作为一个记 录第一次入库的字段,可以将这个属性设置为 True 。
    • DateTimeField:日期时间类型,类似于 DateField 。不仅仅可以存储日期,还可以存储时间。映射到数据库中 是 datetime 类型。这个 Field 也可以使用 auto_now 和 auto_now_add 两个属性。 TimeField: 时间类型。在数据库中是 time 类型。在 Python 中是 datetime.time 类型。
    • EmailField: 类似于 CharField 。在数据库底层也是一个 varchar 类型。最大长度是254个字符。
    • FloatField: 浮点类型。映射到数据库中是 float 类型。
    • IntegerField: 整形。值的区间是 -2147483648——2147483647 。
    • BigIntegerField: 大整形。值的区间是 -9223372036854775808——9223372036854775807 。
    • PositiveIntegerField: 正整形。值的区间是 0——2147483647 。 SmallIntegerField: 小整形。值的区间是 -32768——32767 。
    • PositiveSmallIntegerField:正小整形。值的区间是 0——32767 。
    • TextField: 大量的文本类型。映射到数据库中是longtext类型。
    • UUIDField: 只能存储 uuid 格式的字符串。 uuid 是一个32位的全球唯一的字符串,一般用来作为主键。
    • URLField: 类似于 CharField ,只不过只能用来存储 url 格式的字符串。并且默认的 max_length 是200。
    •  
    •  
    •  
    •  以上。
  • 相关阅读:
    iOS开发时区缩写
    HTTPS工作原理-默写
    【Swift学习笔记-《PRODUCT》读书记录-CoreData数据存储】
    判断是否是满二叉树
    词向量
    百面机器学习|第一章 特征工程
    c++中创建二维数组的几种方法
    深度学习入门|第七章 卷积神经网络(三)
    深度学习入门|第六章与学习相关的技巧(二)
    深度学习入门|第七章卷积神经网络
  • 原文地址:https://www.cnblogs.com/longbigbeard/p/10077806.html
Copyright © 2020-2023  润新知