Django 之 model 与 forms 字段类型

来源:互联网 发布:网络和互联网的区别 编辑:程序博客网 时间:2024/05/13 00:21
Django 是通过 models 与数据库相对应的,一般来说,每个模型映射到单个数据库中的一个表。该模型是单一的、明确的、与你的数据有关的数据源。它包含了你所以存储的数据的基本字段和行为。

每一个模型都是 django.db.models.Model 的子类。
模型的每一个属性都对应数据库的一个字段。
Django 会自动为我们产生 database-access API。

例如:from django.db import models
           
          class User(models.Model):
                  name = models.CharField(max_length=50)
                  .......

Models 中的字段
1) AutoField(**options)    # int 自增字段
    如果不指定主键,系统会自动添加一个主键字段到你的 model

2) BigIntegerField([**options])

3) BooleanField(**options)    # boolean 或 bit
    admin 中会自动将其描述为 

4) CharField(max_length=None[, **options])    # varchar
    CharField.max_length:字段长度的最大值,必填,Django 会根据这个喜爱数据库层和校验层限制该字段所允许的最大字符数。
    admin 中会自动将其描述为 

5) CommaSeparatedIntegerField(max_length=None[, **options])    # varchar
    存放逗号分隔的数值。

6) DateField([auto_now=False, auto_now_add=False, **options])    # date
    DateField.auto_now:保存时自动设置该字段为现在日期,最后修改日期
    DateField.auto_now_add:当该对象第一次被创建是自动设置该字段为现在日期,创建日期
    admin 中会自动将其描述为 ,附带一个 javascript 日历和一个 “Today” 快捷键。

7) DateTimeField([auto_now=False, auto_now_add=False, **options])
    DateTimeField.auto_now、DateTimeField.auto_now_add:同 DateField 一样
    admin 中支持同 DateField 一样的附加选项。

8) DecimalField(max_digits=None, decimal_places=None[, **options])    # decimal
    DecimalField.max_digits:数字中允许的最大位数
    DecimalField.decimal_places:存储的十进制位数

9) EmailField([max_length=75, **options])    # varchar
    一个带有检查 Email 合法性的 CharField

10) FileField(upload_to=None[, max_length=100, ** options])    # varchar
    FileField.upload_to:一个用于保存上载文件的本地文件系统路径,该路径由 MEDIA_ROOT 中设置的 url 中
    
11) FilePathField(path=None[, math=None, recursive=False, max_length=100, **options])    # varchar
    FilePathField.path:文件的绝对路径,必填
    FilePathField.match:用于过滤路径下文件名的正则表达式,该表达式将 用在文件名上(不包括路径)。
    FilePathField.recursive:True 或 False,默认为 False,指定是否应包括所有子目录路径。
    例如:FilePathField(path="/home/images", match="foo.*", recursive=True)
               将匹配“/home/images/foo.gif”但不匹配“/home/images/foo/bar.gif”

12) FloatField([**options])    # float

13) ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100, **options])    # varchar
    ImageField.height_field、ImageField.width_field:如果提供这两个参数,则图片将按提供的高度和宽度规格保存。 该字段要求 Python Imaging 库。
    会检查上传的对象是否是一个合法图片。

14) IntegerField([**options])    # int
    保存整数

15) IPAdressField([**options])    # varchar
    一个字符串形式的 IP 地址

16) NullBooleanField([**options])    # bit 可以设置上 null 值
    admin 用一个选择框