最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Django有关models数据类型介绍

    正文概述 尤及   2020-12-15   371

    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参数被使用时,该参数才会有效。指定使用哪些中间模型字段来确立两个模型的多对多关系。

    更多Python知识,请关注:Python自学网!!


    起源地下载网 » Django有关models数据类型介绍

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元