Django笔记六 常用字段类型,字段选项

字段类型:model下的field对应数据库中的表字段

1.AutoField 

    itemId = models.AutoField(primary_key=True)

根据id自动递增,一般和primary_key=True配合使用,设置成主键

2.CharField

    itemName = models.CharField(max_length=50)

字符型,对应数据库的varchar,max_length最大长度必填

3.IntegerField

from django.core.validators import MinValueValidator, MaxValueValidator
 

caseType = models.IntegerField(validators = [MaxValueValidator(1), MinValueValidator(1)]   )

整数型,对应数据库的int,无必填参数。需要注意的是最大最小校验应该使用validators ,不能使用max_length

4.DateTimeField DateField

    createdTime = models.DateTimeField()
    updateTime = models.DateField()

时间类型,对应数据库的datetime和date。无必填参数

5.BooleanField

valStatus = models.BooleanField(default=False)

布尔型,对应数据库的tinyint,无必填参数。Django操作时只能输入True/False,0/1。如果通过数据库操作是可以录入其他值得。

6.TextField

text = models.TextField()

对应数据库的longtext,无必填参数。需要存储很长的字符串会使用,比如存储文章。

7.FloatField

price = models.FloatField()

浮点类型,无必填参数

8.DecimalField

end_plate_lng = models.DecimalField(max_digits=20,decimal_places=10)

对应数据库的decimal。必填参数max_digits 最大位数,decimal_places 小数位数。

当对精度有要求时可使用此字段,比如金额,经纬度。

字段选项:

1.primary_key

caseId = models.AutoField(db_column='case_id', primary_key=True, )

将一个字段设置为该表的主键,每个表只能有一个字段设置primary_key

2.null

caseName = models.CharField(max_length=50,null=True,blank=True)

默认是False,该字典为空时django会将值设为''。

当为True,该字典为空时django会将值设为null。

当设置为True时,一个字段为空的表现就会出现两种,空字符串 '' 和 null

3.blank

remark = models.CharField(verbose_name="备注", max_length=120, blank=True)

默认为False,通俗理解表示该字段是否必填。True表示非必填

4.default

    valStatus = models.BooleanField(default=False)

为该字段添加默认值,可以是个可调用的对象。

5.unique

    caseName = models.CharField(max_length=50,,unique=True)

给该字段添加唯一性校验。如果添加了,那么该字段应该是必填的。

6.db_index

    caseName = models.CharField(max_length=50,unique=True,db_index=True)

给字段添加数据库索引。数据库索引会提高查询效率。

7.auto_now_add auto_now

    createdTime = models.DateTimeField(db_column='created_time', verbose_name="创建时间", auto_now_add=True)
    updateTime = models.DateTimeField(db_column='updated_time', verbose_name="修改时间", auto_now=True)

auto_now_add:用于日期和时间字段。新增一条数据时,该字段写入当前时间。一般用于创建时间

auto_now:用于日期和时间字段。修改一条数据时,该字段写入当前时间。一般用于修改时间

8.verbose_name

字段的备注

9.db_column

用该参数指定数据库列名。django默认使用字段名当数据库列名。

在使用django REST进行接口开发,返回json格式的数据,一般接口的参数都是驼峰写法。对应的数据库的列名是用下划线的。在model中定义字段时,直接用驼峰写法,并用db_column来定义列名。

10.choices


CASE_TYPE_CHOICE = [
    (0, "接口"),
    (1, "UI")
]  
  caseType = models.IntegerField(db_column='case_type', verbose_name="类型", choices=CASE_TYPE_CHOICE, )

该参数提供字段的可选值,并且会校验。每个元组中第一个值会落到数据库中。

11.on_delete

    projectId = models.ForeignKey(ProjectModel, on_delete=models.DO_NOTHING, db_constraint=False, related_name="trends",
                                  db_column='project_id', verbose_name="项目id", help_text="项目id")

CASCADE:级联删除,你无需显性指定它。
PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。DO_NOTHING:删除外键时,什么也不做。

SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。
SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
SET(): 自定义一个值,该值当然只能是对应的实体了

12.db_constraint

在使用关联字段时,这个字段默认是True。在mysql的表现就是外键。如果设置了外键,在删除关联数据时,会报错。

在使用关联时,这个字段应该设置为False,取消外键约束,保留逻辑关联,能正常使用连表查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值