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'),
            # )

 

posted @ 2017-08-03 14:06  投以木瓜  阅读(67)  评论(0)    收藏  举报