Django 之 model 与 forms 字段类型

本文详细介绍了Django框架中模型的概念及使用方法,包括如何定义模型类及其对应的数据库字段类型,并解释了不同字段类型的特性和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 用一个选择框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值