django----models
from django.db import models
models是django中定义数据库模型的模块,通过用户的填写,能确定数据库的表中的每一列的名称,每一列表的格式、长度,table的名称等等。
总之就是对数据库进行的定义。
from django.db import models
# Create your models here.
class Article(models.Model):
id = models.AutoField(primary_key=True) #table中的id
article_author = models.CharField(max_length=30) # 定义作者
article_title = models.CharField(max_length=100)#定义标题
article_content = models.TextField()#定义内容
class Meta:
db_table = 'article'#定义表格名称
def __str__(self):
return self.article_title#在admin界面显示的内容
其中的AutoField为模型的字段类型,列出如下:
类型:
自增类型
AutoField(Field) #int自增列,必须填入参数 primary_key=True
BigAutoField(AutoField) #bigint自增列,必须填入参数 primary_key=True
注:当model中如果没有自增列,则自动会创建一个列名为id的列
数字类型
SmallIntegerField(IntegerField) #小整数 32768~32767
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) #正小整数 0~32767
IntegerField(Field) #整数列(有符号的) 2147483648~2147483647
PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) #正整数 0~2147483647
BigIntegerField(IntegerField) #长整型(有符号的) 9223372036854775808~9223372036854775807
布尔型
BooleanField(Field) #布尔值类型
NullBooleanField(Field) #可以为空的布尔值
字符文本型
CharField(Field) #字符类型
#必须提供max_length参数, max_length表示字符长度
TextField(Field) #文本类型
EmailField(CharField) #字符串类型,Django Admin以及ModelForm中提供验证机制
IPAddressField(Field) #字符串类型,Django Admin以及ModelForm中提供验证 IPV4 机制
GenericIPAddressField(Field) #字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
#参数:
#protocol,用于指定Ipv4或Ipv6, 'both',"ipv4","ipv6"
#unpack_ipv4, 如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启刺功能,需要protocol="both"
URLField(CharField) #字符串类型,Django Admin以及ModelForm中提供验证 URL
SlugField(CharField) #字符串类型,Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、连接符(减号)
CommaSeparatedIntegerField(CharField) #字符串类型,格式必须为逗号分割的数字
UUIDField(Field) #字符串类型,Django Admin以及ModelForm中提供对UUID格式的验证
FilePathField(Field) #字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能
#参数:
#path, 文件夹路径
#match=None, 正则匹配
#recursive=False, 递归下面的文件夹
#allow_files=True, 允许文件
#allow_folders=False, 允许文件夹
FileField(Field) #字符串,路径保存在数据库,文件上传到指定目录
#参数:
#upload_to = "" 上传文件的保存路径
#storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
ImageField(FileField) #字符串,路径保存在数据库,文件上传到指定目录
#参数:
#upload_to = "" 上传文件的保存路径
#storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
#width_field=None, 上传图片的高度保存的数据库字段名(字符串)
#height_field=None 上传图片的宽度保存的数据库字段名(字符串)
日期时间型
DateTimeField(DateField) #日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
DateField(DateTimeCheckMixin, Field) #日期格式 YYYY-MM-DD
TimeField(DateTimeCheckMixin, Field) #时间格式 HH:MM[:ss[.uuuuuu]]
DurationField(Field) #长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
浮点型
FloatField(Field) #浮点型
进制型
DecimalField(Field) #10进制小数,精确的小数类型
#参数:
#max_digits,小数总长度
#decimal_places,小数位长度
BinaryField(Field) #二进制类型
变量:
字段参数
blank
设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。
null
设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。
如果想设置BooleanField为空时可以选用NullBooleanField型字段。
max_length
为CharField型字段设置最大长度。
default
为字段设定默认值。
默认值不能是一个可变对象(模型实例,列表,集合等),作为到同一个实例的参考,该对象将用作所有新的模型实例中的默认值。相反,在一个可调用的对象中封装所需的默认值。例如,如果你有一个自定义JSONField,并希望指定一个作为默认的字典,使用一个lambda表达式如下:
contact_info = JSONField("ContactInfo", default=lambda:{"email": "to1@example.com"})
verbose_name
设置此字段在admin界面上的显示名称。
unique
设置为True,此字段在数据库中必须是唯一的。
primary_key
如果设置为True,则此字段成为Model的主键。一般情况下,django会为Model自动添加一个叫id的IntegerField字段作为主键。
class Meta
class Meta: # 用于创建多列间的组合操作
# unique_together = ( #创建有关联的联合唯一索引
# ('email','ctime'),
# )
# index_together = ( #创建普通的索引
# ('email','ctime'),
# )

浙公网安备 33010602011771号