django中models 常见field详解

参考官方文档-模型字段参考

Field options:所有字段均可用,可选

  • null 默认为False, True表示允许该字段为空
  • blank 默认为False, True表示允许为空
  • blank 与 null 区别:null是跟数据库相关的, blank是跟表单验证相关的。当blank=True,表示允许输入一个空值
  • choice 可选择的, 限制该选项的字段值必须是已经指定的choice中的一个
  • db_column 数据库column的名称, 不填则默认使用Field名作为字段名
  • db_index Ture表示数据库会为该字段创建索引
  • default 给个默认值 
  • editable 默认为True False表示该字段不会出现在admin或者其他ModelForm, 同时不进行模型验证
  • primary_key True表示设置主键
  • unique True表示唯一性, 不可重复

Field type:字段类型

  • class AutoField(**options)

        没有自己设置主键时, Django默认自动设置

  • class IntegerField(**options)

        默认的表单组件是一个NumberInput

  • class PositiveIntegerField(**options)

        类似于IntegerField, 但是必须为正或0

  • class BigIntegerField(**options)

        默认的表单组件是一个TextInput

  • class FloatField(**options)

默认的表单组件是一个NumberInput

  • class BooleanField(**options)

默认的表单组件是一个CheckboxInput

  • class NullBooleanField(**options)

类似于BooleanField, 不同的是其允许值为null

  • class CharField(max_length=None, **options)

默认的表单组件是一个TextInput

max_length //必填参数

  • class URLField(max_length=200, **options)

默认的表单组件是一个TextInput, 类似于CharField

  • class TextField(**options)

默认的表单组件是一个Textarea

  • class DateField(auto_now=False, auto_now_add=False, **options)

datetime.date的实例, 默认的表单组件是一个TextInput

auto_now //可选参数, True表示每次更新的时间

auto_now_add //可选参数, True表示第一次创建的时间

  • class DateTimeField(auto_now=False, auto_now_add=False, **options)

datetime.datetime的实例, 类似DateField, 其他同上, 

  • class TimeField(auto_now=False, auto_now_add=False, **options)

datetime.time的实例, 类似DateField,  默认的表单组件是一个TextInput

  • class DecimalField(max_digits=None, decimal_places=None, **options)

Decimal的实例, 默认的表单组件是一个TextInput

max_digits //必填参数, 最大位数(包含小数部分)

decimal_places //必填参数, 小数位

  • class FileField(upload_to=None, max_length=100, **options)

默认的表单组件是一个ClearableFileInput

upload_to //可选参数

max_length //可选参数

upload_to:

       1. 如果使用默认的FileSystomStorage, 文件将会存储到settings文件中配置的MEDIA_ROOT路径中
               2.upload_to的值也可以为可调用对象,通过调用这个对象可以获得上传路径, 此可调用必须接受两个参数:
                    instance:定义了FileField的模型实例
                    filename:文件名

eg1.

class MyModel(models.Model):
    # file will be uploaded to MEDIA_ROOT/uploads
    upload = models.FileField(upload_to='uploads/')
    # or...
    # file will be saved to MEDIA_ROOT/uploads/2015/01/30
    upload = models.FileField(upload_to='uploads/%Y/%m/%d/')

eg2.

def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
    upload = models.FileField(upload_to=user_directory_path)
  • class FilePathField(path=None, match=None, recursive=False, max_length=100, **options)

该字段仅限于文件系统上某个目录中的文件名集合中

path //必填参数, 上面所说的'某个目录'的绝对路径

match //可选参数, 正则表达式

recursive //默认False, 是否递归该目录下所有子目录的所有文件

  • class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options)

继承FileField所有属性和方法

  • class GenericIPAddressField(protocol='both', unpack_ipv4=False, **options) 默认的表单组件是一个TextInput

protocol='both/ipv4/ipv6'  //默认为both

unpack_ipv4 //默认禁用

  • class EmailField(max_length=254, **options)
  • class SlugField(max_length=50, **options)
  • class UUIDField(**options)

用于存储通用唯一标识符的字段, 可以用该字段代替默认的AutoField

eg

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    # other fields

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值