django中字段类型Field Types 和 选项 讲解
老眼 2018-01-05 14:44:41
分 享


models设计例子

from datatime import datatime
from django.db import models
class UserProfile(models.Model):
    """
    用户
    """
    name = models.CharField(max_length=30,null=True,blank=True,verbose_name="姓名")
    birthday = models.DateField(null=True,blank=True,verbose_name="出生年月")
    gender = models.CharField(max_length=6,choices=(('male',u'男'),('female',u'女')),default='male',verbose_name="性别")
    mobile = models.CharField(max_length=11,verbose_name="电话")
    email = models.EmailField(max_length=100,null=True,blank=True,verbose_name="邮箱")
    add_time = models.DateTimeField(default=datatime.now,verbose_name="添加时间")
    class Meta:
        verbose_name="用户"
        verbose_name_plural=verbose_name
    def __str__(self):#在Python2中用__unicode__替换__str__
        return self.name


常见Field选项

(1) null

null 缺省设置为false,通常不将其用于字符型字段上,比如CharField,TextField上,字符型字段如果没有值会返回空字符串。

(2)blank

该字段是否可以为空。如果为假,则必须有值

(3)choices
    
一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择

例子:models中定义一个性别的字段

gender = models.CharField(max_length=6,choices=(('male',u'男'),('female',u'女')),default='male',verbose_name="性别")

(4)default

field的默认值

(5)help_text

admin模式下帮助文档,不过即使不使用admin,也可以当做描述文档使用

(6)primary_key

设置主键。如果没有设置django创建表时会自动加上

(7)unique

数据唯一性

(8)verbose_name

该字段field的详细名字,通常为其指定中文名称

常见Field Types 类型

(1)BooleanField

布尔型Field,值为true或false,本类型不允许出现null

(2)CharField

字符串,一般都在创建时写入max_length参数

(3)ImageField

图片文件类型,需要给ImageField 中指定 upload_to='' 上传文件的目录,其中height_field, width_field 如果设置这两项,会自动对图片进行缩放后再保存,需要 python Imaging library模块

(4)IntegerField

整数类型

(5)FloatField

浮点数,两个必须选项: max_digits  表示数字长度; decimal_places 表示有效位数

(6)TextField

文本类型

(7)FileField

保存文件的相对路径名称,绝对路径需要在setting中设置 MEDIA_ROOT。对于ImageField设置 MEDIA_URL。参数upload_to=''相对于MEDIA_ROOT目录的子目录

(8)EmailField


邮箱类型


(9)IPAddressField

点分十进制表示的ip地址,比如:192.168.0.1

(10)GenericIPAddressField

ipv4和ipv6地址表示

(11)DateField

该字段利用 Python 的 datetime.date 实例来表示日期

(12)DateTimeField

该字段利用 datetime.datetime 实例表示日期和时间

(13)TimeField

该字段使用 Python 的 datetime.time 实例来表示时间

(14)PositiveIntegerField

正整数

(15)URLField

存储url,选项: verify_exists  如果为True ,系统自动检查该url是否存在不为404

(16)DecimalField

固定精度的十进制数,在Python中表示一个 十进制的实例。有两个必需的参数:max_digits :数中允许的最大数目的数字  和  decimal_places :存储的小数位数的号码

例如,要存储的数字最大值是999,而带有两个小数位,你可以使用:

goods_price=models.DecimalField(max_digits=5, decimal_places=2)


参考地址

https://docs.djangoproject.com/en/1.11/ref/forms/fields


吐槽一下

游客

所有吐槽
  • 暂时还没有吐槽,赶紧来吐槽!