zoukankan      html  css  js  c++  java
  • django 模版:字段属性,参数设置

    一、模型类属性命名限制

    参考:https://docs.djangoproject.com/zh-hans/3.0/topics/db/models/

    1)不能是python的保留关键字。
    2)不允许使用连续的下划线,这是由django的查询方式决定的。例如:b__title = models.CharField(max_length=20)就不行
    3)定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

    属性名=models.字段类型(选项)
    
    #例如
    btitle = models.CharField(max_length=20)
    

    二、字段类型

    参考:https://docs.djangoproject.com/zh-hans/3.0/ref/models/fields/
    使用时需要引入django.db.models包,

    from django.db import models
    

    字段类型如下:

    类型描述
    AutoField 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性。
    BooleanField 布尔字段,值为True或False。
    NullBooleanField 支持Null、True、False三种值。
    CharField(max_length=最大长度) 字符串。
    参数max_length表示最大字符个数。
    TextField 大文本字段,一般超过4000个字符时使用。
    IntegerField 整数
    DecimalField(max_digits=None, decimal_places=None) 十进制浮点数。
    参数max_digits表示总位。
    参数decimal_places表示小数位数。
    常用于商品价格(精确度高)。
    FloatField 浮点数。参数同上(精确度比上一个低)
    DateField:([auto_now=False, auto_now_add=False]) 日期。
    1)参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。
    2) 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。
    3)参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。
    TimeField 时间,参数同DateField。
    DateTimeField 日期时间,参数同DateField。
    FileField 上传文件字段。
    ImageField 继承于FileField,对上传的内容进行校验,确保是有效的图片。

    三、字段选项(字段参数)

    参考:https://docs.djangoproject.com/zh-hans/3.0/topics/db/models/#field-options

    通过选项实现对字段的约束,选项如下:

    选项名描述
    default 默认值。设置默认值。
    primary_key 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。
    unique 如果为True, 这个字段在表中必须有唯一值,默认值是False。
    db_index 若值为True, 则在表中会为此字段创建索引(相当于目录),默认值是False。
    db_column 字段的名称,如果未指定,则使用属性的名称。
    null 如果为True,表示允许为空,默认值是False。
    blank 如果为True,则该字段允许为空白,默认值是False。(一般是后台管理处输入是否可为空格等)
    • 【对比】:null是数据库范畴的概念,blank是后台管理页面表单验证范畴的。
    • 【经验】:当修改模型类之后,如果添加的选项不影响表的结构,则不需要重新做迁移,商品的选项中default和blank不影响表结构。

    例1:btitle = models.CharField(max_length=20,unique=True) #该字段不能重复
    例2:btitle = models.CharField(max_length=20,db_column='title') #让表字段名不等于title,等于title

    from django.db import models
    # 设计和表对应的类,模型类
    
    # 一类
    # 图书类
    class BookInfo(models.Model):
        '''图书模型类'''
        # 图书名称,CharField说明是一个字符串,max_length指定字符串的最大长度
        btitle = models.CharField(max_length=20,unique=True) #该字段不能重复
        # 出版日期,DateField说明是一个日期类型
        bpub_date = models.DateField()
        # 阅读量
        bread = models.IntegerField(default=0)
        # 评论量
        bcomment = models.IntegerField(default=0)
        # 删除标记
        isDelete = models.BooleanField(default=False)
    
        # def __str__(self): #重定义系统的str方法,让它返回对应图书的名字
        #     return self.btitle
    
    
    # 多类
    # 英雄人物类
    # 英雄名 hname
    # 性别 hgender
    # 年龄 hage
    # 备注 hcomment
    # 关系属性 hbook,建立图书类和英雄人物类之间的一对多关系
    class HeroInfo(models.Model):
        '''英雄人物模型类'''
        hname = models.CharField(max_length=20) # 英雄名称
        # 性别,BooleanField说明是bool类型,default指定默认值,False代表男
        hgender = models.BooleanField(default=False)
        # 备注
        hcomment = models.CharField(max_length=128)
    
        # 关系属性 hbook,建立图书类和英雄人物类之间的一对多关系
        # 关系属性对应的表的字段名格式: 关系属性名_id
        hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE) #对应BookInfo表的主键ID
        # 删除标记
        isDelete = models.BooleanField(default=False)
    
        # def __str__(self): #返回英雄名
        #     return self.hname
     
    

      

    原文:https://www.cnblogs.com/chenxi188/p/12176670.html

  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/cheflone/p/13743247.html
Copyright © 2011-2022 走看看