当前位置: 首页 > 编程笔记 >

Djang的model创建的字段和参数详解

巴博耘
2023-03-14
本文向大家介绍Djang的model创建的字段和参数详解,包括了Djang的model创建的字段和参数详解的使用技巧和注意事项,需要的朋友参考一下
class test_orm(models.Model):
  id = models.AutoField(primary_key=True)
  # int自增列,必须填入参数primary_key=True,当model中没有自增咧,如果不写,python会自动创建一个名为id的自增咧
 
  age = models.IntegerField(default=12)
  # 一个整数类型,范围-21474836648到21474836648
 
  name = models.CharField(max_length=64)
  # 字符类型,必须提供max_length的参数,表示字符的最大长度
  import datetime
  t1 = models.DateField(auto_now_add=True,default=datetime.date(year=2018,month=4,day=3))
  # t1 = models.DateField(auto_now=True)
  # 日期字段,日期格式,YYYY-MM-DD,相当于python中的
 
 
  t2 = models.DateTimeField(auto_now=True)
  # t2 = models.DateTimeField(auto_now_add=True)
  # 日期时间字段,格式为YYYY-MM-DD HH:MM:SS
 
  # auto_now_add:创建数据记录的时候会把当前时间添加到数据库
  # auto_now:每次更新记录的时候会更新字段
 
 
  t3 = models.SmallIntegerField()
  # 小整数,从-32768到32768
 
  t4 = models.PositiveIntegerField()
  # 正整数类型,从0到21474836648
 
  t5 =models.PositiveSmallIntegerField()
  # 正整数类型,从0到32768
 
  t6 = models.BigIntegerField()
  # 长整数,从-9223372036854775808到9223372036854775808
 
 
  t7 = models.BooleanField()
  # 布尔值类型
 
 
  t8 = models.NullBooleanField()
  # 可以为空的布尔值类型
 
 
  t9 = models.TextField()
  # 文本类型
 
  t10 =models.EmailField()
  # 字符串类型,仅仅在django的admin会校验邮箱的格式
 
  t11 = models.IPAddressField()
  # 字符串类型,仅仅在django的admin会校验ipv4的格式
 
 
  t12 = models.GenericIPAddressField(protocol="ipv4")
  # t12 = models.GenericIPAddressField(protocol="ipv6")
  # t12 = models.GenericIPAddressField(protocol="both")
  # 字符串类型,在django的admin中会同时校验ipv4和ipv6
 
  t13 = models.URLField()
  # 字符串类型,仅仅在django的admin会校验url的格式
 
 
  t14 = models.SlugField()
  # 字符串类型,django的admin提供验证字母,数字下划线,减号
 
  t15 = models.UUIDField()
 
 
  t16 = models.FileField()
  # 保存路径到数据库中
 
  t17 = models.FloatField()
  # 浮点型
 
 
  # import datetime
  # now = datetime.datetime.now()
  #
  # d = datetime.timedelta(days=7)
  #
 
  # now = now + d
 
 
  # 上面的代码是求一个时间间隔,当前时间的的7天后的时间
 
 
  # -------------------------------------------------------
  # 字段参数
 
  t18 = models.CharField(null=True,unique=True,db_index=True,primary_key=True,max_length=64,default="aaa")
 
  # db_index:为这个字段设置索引
 
  t19 = models.ForeignKey(to="test1",to_field="name",related_name="3b",on_delete=models.CASCADE(),db_constraint=False)
  # to:关联那张表
  # to_field:关联表的哪个字段
  # related_name:反向查找的时候带起表明_set
  # on_delete:表示我这个字段关联的单表删除了,我这个表的数据该如何处理
  # db_constraint:修改外键设置为软关联,不一定一定要从另外一张表中选,可以自定义,默认是True,可以调整为False
  <br data-filtered="filtered"><br data-filtered="filtered"><br data-filtered="filtered">  to和related_name也可以用在多对多的关系中,已经设计数据库,这2个属性最好都加上  <br data-filtered="filtered">
 
  # 这个就是元类,就是我们经常说的元数据
  class Meta:
    db_table = "ddddd"
    # 设置表明
    unique_together = ("t12","t19")
    # 联合唯一
 
    index_together = ("t1","t13")
    # 联合索引,为这两列做一个索引
 
 
    ordering = "t19"
    # 指定默认按照什么来排序
models.DecimalField(max_digits=4,decimal_places=2,default=34.43)

小数,max_digits是小数+总数的最大长度,decimal_places是小数部分的最大长度

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Django获取model中的字段名和字段的verbose_name方式,包括了Django获取model中的字段名和字段的verbose_name方式的使用技巧和注意事项,需要的朋友参考一下 定义模型: 获取字段名和verbose_name: 注:appname是model所在app的名字,modelname是model的名字 如果在view中执行get_model.filed('

  • 运行两个命令的区别是什么: 和 第二个方法是否立即在数据库中创建,而对于,必须显式调用方法才能将其添加到数据库中?

  • 本节,我们将创建Model类,它负责初始化和更新英雄、坏人、关卡、生命值条。这些对象可以被看做是游戏的“数据”。 操作步骤 按照以下步骤,创建Canvas Hero游戏的模型: 1. 定义Model类的构造函数: /* 游戏模型 * * 模型负责初始化和 更新英雄、坏人、关卡、生命值条 */ function Model(controller){ this.controller = c

  • 问题内容: 我正在尝试创建一个容纳电话的阵列,我有此代码 但我无法访问$ scope.telephone 问题答案: 第一件事是第一。您需要先在控制器中定义为数组,然后才能在视图中开始使用它。 要解决在添加新输入时无法识别ng-model的问题-为此,您必须使用Angular服务。 从$ compile的Angular.js API参考中 : 将HTML字符串或DOM编译为模板,并生成模板函数,然

  • 问题内容: 存取2003 最终,我需要创建一个用于打印标签“样品ID,x的x的jar”的报告。 我的表上有样品ID和罐数。是否可以创建一个查询,该查询为我提供3个字段:样品ID,广口瓶编号,广口瓶数量-广口瓶编号根据广口瓶数量创建增量记录吗? 该表信息为: 我想避免为每个罐子创建一个表记录。 问题答案: 您可以利用数字表: 样本是当前表的名称。 数字表包含1到整数之间的整数,您可以从罐子中获得的最

  • 本文向大家介绍Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法,包括了Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法。分享给大家供大家参考,具体如下: 前言:laravel创建数据库,实际可以手动创建,如古老的