django中models field详解

本文详细介绍了Django中models字段的使用,包括字段选项、普通字段类型和关系字段类型,如CharField、ForeignKey和ManyToManyField,强调了字段选项如null、blank、default等,并通过例子展示了如何设置和使用。
摘要由CSDN通过智能技术生成

本文参考自:django官方文档models/field

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

一 field options(所有字段共用)

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

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

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

from django.db import models

class Student(models.Model):
FRESHMAN = ‘FR’
SOPHOMORE = ‘SO’
JUNIOR = ‘JR’
SENIOR = ‘SR’
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, ‘Freshman’), #第一个参数是真正的model参数,#第二个参数则是方便人们理解阅读
(SOPHOMORE, ‘Sophomore’),
(JUNIOR, ‘Junior’),
(SENIOR, ‘Senior’),
)
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)

def is_upperclass(self):
    return self.year_in_school in (self.JUNIOR, self.SENIOR)

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

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

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

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

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

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

二 field type(字段类型,细分的话可以分为普通字段以及关系字段)

1 普通字段

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

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

每个model类仅能有一个主键

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

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

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

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

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

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

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

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

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

#to store numbers up to 999 with a resolution of 2 decimal places, you’d use
models.DecimalField(…, max_digits=5, decimal_places=2)
  7 EmailField(max_length=254, **options) 邮件字段,使用EmailValidator进行验证

8 FileField(upload_to=None, max_length=100, **options) 文件上传字段。

这个字段不能设置prim

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值