day18-DjangoORM字段参数介绍

一、前言

  之前我们讲了Djngao的ORM的字段的类型,分为 字符串型,数字型,时间型,二进制型等等,今天我们来讲讲django的orm的字段的参数介绍。

二、整体的字段参数列表

 null                数据库中字段是否可以为空
 db_column           数据库中字段的列名
 db_tablespace
 default             数据库中字段的默认值
 primary_key         数据库中字段是否为主键
 db_index            数据库中字段是否可以建立索引
 unique              数据库中字段是否可以建立唯一索引
 unique_for_date     数据库中字段【日期】部分是否可以建立唯一索引
 unique_for_month    数据库中字段【月】部分是否可以建立唯一索引
 unique_for_year     数据库中字段【年】部分是否可以建立唯一索引
 auto_now_add        更新时,自动更新为当前时间,一般用于create_time
 auto_now            创建时,自动生成时间,用于update_time
 
 
 verbose_name        Admin中显示的字段名称
 blank               Admin中是否允许用户输入为空
 editable            Admin中是否可以编辑
 help_text           Admin中该字段的提示信息
 choices             Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
                     如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)
 
 error_messages      自定义错误信息(字典类型),从而定制想要显示的错误信息;
                     字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
                     如:{'null': "不能为空.", 'invalid': '格式错误'}
 
 validators          自定义错误验证(列表类型),从而定制想要的验证规则
                     from django.core.validators import RegexValidator
                     from django.core.validators import EmailValidator,URLValidator,DecimalValidator,\
                     MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
                     如:
                         test = models.CharField(
                             max_length=32,
                             error_messages={
                                 'c1': '优先错信息1',
                                 'c2': '优先错信息2',
                                 'c3': '优先错信息3',
                             },
                             validators=[
                                 RegexValidator(regex='root_\d+', message='错误了', code='c1'),
                                 RegexValidator(regex='root_112233\d+', message='又错误了', code='c2'),
                                 EmailValidator(message='又错误了', code='c3'), ]
                         )

三、参数字段的详细介绍

前提:在modles.py里面的数据库操作之后,必须在终端依次执行如下命令:

python manage.py makemigrations  #生成init.py的文件
python manage.py migrate #把init.py的文件在数据库生成表结构

3.1、null

说明:db是否可以为空

class UserInfo(models.Model):
    username = models.CharField(max_length=32,null=True)  #表示在db中数据可以为空

3.2、default

说明:默认值

class UserInfo(models.Model):
    username = models.CharField(max_length=32,default="zhangqigao")  #字段生成的默认值为"zhangqigao"
    password = models.CharField(max_length=60)

3.3、primary_key

说明:主键

class UserGroup(models.Model):
    uid = models.AutoField(primary_key=True)  #设置主键
    groupname = models.CharField(max_length=32)

3.4、db_column

说明:设置列名

class UserInfo(models.Model):
    username = models.CharField(max_length=32,db_column="user_name") #把列名设置为user_name
    password = models.CharField(max_length=60)

效果如图:

3.5、db_index

说明:设置普通索引

class UserInfo(models.Model):
    username = models.CharField(max_length=32,db_index=True) #为这个字段设置一个普通索引
    password = models.CharField(max_length=60)

3.6、unique

说明:设置唯一索引

class UserInfo(models.Model):
    username = models.CharField(max_length=32,unique=True) #设置唯一索引
    password = models.CharField(max_length=60)

3.7、 unique_for_date

说明:只对时间做索引

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=60)
    data_time = models.DateTimeField(max_length=10,unique_for_date=True)#只对前面的时间做索引 201611010301012做索引

3.8、 unique_for_month

说明:只对月份做索引

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=60)
    data_time = models.DateTimeField(max_length=10,unique_for_month=True)#只对月份做索引

3.9、unique_for_year

说明:只对年份做索引

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=60)
    data_time = models.DateTimeField(max_length=10,unique_for_year=True)#只对年份做索引

3.10、auto_now

说明:创建时自动生成,这个用于update_time,更新时间,更新当前表时,会自动创建一个时间。这个你创建的时候不用添加,django自动帮你创建更新时间。

class UserGroup(models.Model):
    uid = models.AutoField(primary_key=True)
    groupname = models.CharField(max_length=32)
    ctime = models.DateTimeField(auto_now_add=True,null=True)
    utime = models.DateTimeField(auto_now=True,null=True)#也不需要自己手动添加,django自动帮你创建

  django admin显示:

数据库显示:

注意了:如果你用orm的语法,传统语法,这个uptime是不会更新的,只有另外一种方式才会更新:

#uptime不会更新的写法
obj = UserGroup.objects.filter(id=1).update(groupname="qigao")

#会更新的写法
obj = UserGroup.objects.filter(id=1).first()
obj.groupname = "CE0"
obj.save()

3.11、auto_now_add

说明:更新时自动更新为当前时间,这个一般用于create_time,用于创建时间,因为是当前增加的嘛。这个你创建的时候不用添加,django自动帮你创建当前时间。

class UserGroup(models.Model):
    uid = models.AutoField(primary_key=True)
    groupname = models.CharField(max_length=32)
    ctime = models.DateTimeField(auto_now_add=True,null=True)  #不需要自己添加,django会自动帮你添加

 django admin显示:

数据库显示:

3.11、choices

说明:我们会存一些类型,正常类型是放在数据库里面,但是在这边我们可以不放在数据库里面,我放在内存里面。避免链表查询。

class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=60)
    #设置用户类型选项
    user_type_choices = (
        (1,"超级用户"),
        (2,"普通用户"),
        (3,"访客"),
    )
    user_type_id = models.IntegerField(choices=user_type_choices,default=1)  #把用户类型存在user_type_id字段中,默认值为1

在django中显示中文:

3.12、blank

说明:在django admin是否可以为空

class UserInfo(models.Model):
    username = models.CharField(max_length=32,blank=True) #在django admin中可以为空
    password = models.CharField(max_length=60)

 如图:

3.13、verbose_name

说明:django admin中给字段取一个别名,比如取一个中文名

class UserInfo(models.Model):
    username = models.CharField(max_length=32,verbose_name="用户名") #取一个别名
    password = models.CharField(max_length=60)

 django后台显示:

3.14、editable

说明:django后台的字段是否可以编辑

class UserInfo(models.Model):
    username = models.CharField(max_length=32,editable=False)  #表示不可编辑,默认是True,不可编辑,django admin 后台直接不显示
    password = models.CharField(max_length=60)

 django admin的后台显示,直接不显示了:

3.15、error_messages

说明:错误信息

class UserInfo(models.Model):
    username = models.CharField(max_length=32,error_messages={'null': "不能为空.", 'invalid': '格式错误'})
    password = models.CharField(max_length=60)

3.16、help_text

说明:django admin提示,就是帮助信息

class UserInfo(models.Model):
    username = models.CharField(max_length=32,help_text="用户名")
    password = models.CharField(max_length=60)

 django admin 后台显示:

 

posted @ 2018-03-12 17:23  帅丶高高  阅读(184)  评论(0编辑  收藏  举报