温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

关于Django中models数据类型的简介

发布时间:2020-06-28 15:43:41 来源:亿速云 阅读:282 作者:清晨 栏目:编程语言

小编给大家分享一下关于Django中models数据类型的简介,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!


介绍:在model中添加字段的格式一般为:“field_name = field_type(**field_options)”

1、field options(所有字段共用)

null默认为False,True则表示可以为null。(空字符串在数据库中可能被存储为'')

blank默认为False,True表示可以为空。

choice可选的,限制了该选项的字段值必须是所指定的choice中的一个。

db_column  数据库column名称。默认为本字段的名称。

db_index  如果为True的话,该字段的数据库索引将会被创建。

default   设置该字段的默认值,可以是值也可以是对象。

editable   默认为True,若为False,则不会在admin/界面显示

primary_key  若设置为True,则表示将该字段设置为主键。一般情况下django默认会设置一个自增长的id主键。

unique   若设置为True,该字段值不可重复。

2、field type(可以分为普通字段以及关系字段)

普通字段

AutoField()  根据已有id自增长的整形唯一字段,一般每个model类不需设置该字段,因为django会为每个model自动设置。

        django默认会为每个model类添加如下语句:id = models.AutoField(primary_key=True)  当其他字段添加了primary_key属性,则不会创建id字段了。

  每个model类仅能有一个主键。

BooleanField()  布尔型字段,默认的表单窗口部件是CheckBoxInput。

CharField()  字符型字段,默认的表单窗口部件是TextInput。该字段类型有一个必需参数:max_length  在数据库水平限定了字符串最大长度。

 DateField()  日期字段,字段的值是python中datetime.date的实例,默认的表单窗口是TextInput有几个可选的参数:

 auto_now=True/False:当设置为True时,每当该对象使用save()时,该字段的值就会被更新。

 auto_now_add=True/False: 当设置为True时,该字段的值为该对象被创建时的日期。

DateTimeField()  日期和时间字段,值为datetime.datetime实例。默认的表单窗口以及可选参数同上。

DecimalField()  混合精度的小数型数字字段。有两个必需的参数:

 max_digits=ingt_number:限定数字的最大位数(包含小数位)。

 decimal_places=int_number:存储数字的小数位。

EmailField(max_length=254, **options)  邮件字段,使用EmailValidator进行验证。

关系字段

        关系字段:一对一,多对一,多对多

  一对一:  现在有很多一对一辅导班,也就是上课时,一个老师对应一个学生,一个学生对应一个老师

  多对一:  很多偏远山区的学校可能整个学校只有一个老师,这一个老师对应多个学生,所有的学生对应这一个老师

  多对多:  而我们则很幸福,学校里有许多老师,一个老师教习一科,学生有多个老师,老师有多个学生。

ForeignKey(othermodel, on_delete, **options)  多对一或者一对多或者外键字段。

 othermodel:  所关联的模型,'多' model使用外键关联  '一'model。

      当所关联的模型为他自己时,使用'self'

      当引用的模型为其他app中的模型时,要加上app名称标签:  'app_name.model_name'

      数据库会自动在外键字段上创建索引,可以使用de_index=False关闭该功能。

 on_delete: 当删除 "一" 模型对象时,django会根据该参数的值对与该对象相关联的其他对象(也就是 ‘多’)进行操作。

        在django1.9以及之前的版本中,on_delete作为一个关键字参数。而在1.10则可以作为第二个参数

      models.CASCADE:   默认为models.CASCADE   级联删除。当删除'一'时,‘多’会被删除。比如:

             modles.PROTECT :    当删除一个具有外键关系的对象时,会引发一个异常,阻止删除该对象

      models.SET_NULL:   设置删除对象所关联的外键字段为null。但字段的null属性必需为True

      models.SET_DEFAULT :    设置删除对象所关联的外键字段为默认的值。

      models.SET(value)  :设置删除对象所关联的对象的外键字段为value,value也可以是一个可调用函数。

                     models.DO_NOTHING :  不做任何操作

    limit_choices_to  限制该字段为选项形。格式:limit_choices_to={'is_staff': True}。值也可以为可调用函数。

              related_name  设置从关联对象到自身的关系的名称,若值为'+'  则关联对象与自身无逆向关系。详解请看官方文档。

    to_field  设置所关联对象的关联字段。默认为关联对象的主键字段。

ManyToManyField(othermodel, **options)  多对多字段。

 othermodel:  所关联的model名称

 db_table:  多对多关系会在两个模型所对应的表中间创建一个‘中间表’ ,将多对多转换为两个多对一,该选项为这个中间表设置名称。一般来说django会默认为中间表创建名称,但人们读起来可能搞不清楚究竟中间表关联到了哪里。

 related_name:  同多对一字段中的related_name

 limite_choices_to:  同....

 symmetrical:  当多对多关联对象为自身时可能会用到的参数。默认为True。a,b同属于person模型,person中的friends字段与自身设置了多对多关系,当该值设置为True时,django假定关系为对称,即:a是b的朋友,那么b也是a的朋友。设置为False时,django会强制为逆向关系创建描述信息。

 though:  不想让django自动创建中间表,手动创建中间表所对应的model,通过though指定对应的model名称。

 though_field:  当though参数被使用时,该参数才会有效。指定使用哪些中间模型字段来确立两个模型的多对多关系。


看完了这篇文章,相信你对Django中models数据类型有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI