Django 数据操作之字段与参数

Field

点击这里查看Github,记得关注哦!

数据操作字段与其参数

字段

所有字段类型:

  • AutoField(Field)

    • int 自增列,必须填入参数 primary_key=True
  • BigAutoField(AutoField)

    • bigint 自增列,必须填入参数 primary_key=True

    注:当model中如果没有自增列,则自动会创建一个列名为 id 的列

    
    
    from django.db import models
    
    class UserInfo(models.Model):
        # 自动创建一个列名为id的且为自增的整数列
        username = models.CharField(max_length=32)
    
    class Group(models.Model):
        # 自定义自增列
        nid = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
    
  • 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)

    • 二进制类型

注意: 这些操作,如果是直接用数据库操作语句进行添加的话,不会有报错或是警告之类的信息,但是如果换到后台管理页面上,进行添加则会有相应的警告!

字段参数

通用参数

  • null=True:该字段可以为空
  • default=‘1111’:默认值为1111
  • db_index=True:模型字段设置索引
  • unique=True:字段唯一
  • max_length=xxx:表示字符长度
  • primary_key= True:设置主键
class Meta:  # 用于创建多列间的组合操作
    unique_together = ( #创建有关联的联合唯一索引
         ('email','ctime'),
    )
     index_together = (  #创建普通的索引
         ('email','ctime'),
    )

Django Admin 参数:

  • 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:自定义错误验证(列表类型),从而定制想要的验证规则

关联字段

  • OneToOneField:一对一:
    • class_obj = models.ForeignKey(verbose_name=“班级”, to=“ClassList”)
  • ForeignKey:一对多:
    • customer = models.OneToOneField(verbose_name=‘客户信息’, to=‘Customer’)
  • ManyToManyField:多对多:
    • teachers = models.ManyToManyField(verbose_name=‘任课老师’, to=‘UserInfo’, related_name=‘teach_classes’,limit_choices_to={“department_id__in”: [1003, 1004, 1005]})
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值