Django5—数据库之模型字段

字段

字段名类型备注
models.AutoField自增列 int()如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主 键 primary_key=True。
models.CharField字符串字段用于从数据库层和Django校验层限制该字段所允许的最大字符数。必须 max_length 参数
models.BooleanField布尔类型 tinyint(1)不能为空,Blank=True
models.ComaSeparatedIntegerField用逗号分割的数字 varchar继承CharField,所以必须 max_length 参数
models.DateField日期类型 date对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
models.DateTimeField日期类型 datetime同DateField的参数
models.Decimal十进制小数类型 decimal必须指定整数位max_digits 小数位decimal_places
models.EmailField字符串类型(正则表达式邮箱) varchar对字符串进行正则表达式
models.DecimalField浮点类型 double#一个浮点数. 必须 提供两个参数: 参数描述 #max_digits 总位数(不包括小数点和符号 ) #decimal_places 小数位数 #举例来说, 要保存最大值为 999 (小数点后保存2位),你要这样定义字段:#models.FloatField(…, max_digits=5, decimal_places=2)#要保存最大值一百万(小数点后保存10位)的话,你要这样定义:#models.FloatField(…, max_digits=19, decimal_places=10)#admin 用一个文本框()表示该字段保存的数据.
models.IntegerField整形
models.BigIntegerField长整形
models.GenericIPAddressField字符串类型参数protocol可以是:both、ipv4、ipv6 验证时,会根据设置报错
models.NullBooleanField允许为空的布尔类型
models.PositiveIntegerFiel正Integer
models.PositiveSmallIntegerField正smallInteger
models.SlugField减号、下划线、字母、数字
models.SmallIntegerField数字数据库中的字段有:tinyint、smallint、int、bigint
models.TextField字符串 longtext
models.TimeField时间 HH:MM[:ss[.uuuuuu]]
models.URLField字符串,地址正则表达式
models.BinaryField二进制
models.ImageField图片
models.FilePathField文件

一个文件或者图片上传字段.

  • 要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径. 这个路径必须包含 strftime #formatting,

  • 该格式将被上载文件的 date/time

  • 替换(so that uploaded files don’t fill up the given directory).

  • admin 用一个部件表示该字段保存的数据(一个文件上传部件) .

    #注意:在一个 model 中使用 FileField 或 ImageField 需要以下步骤:
    (1)在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件. 
    (出于性能考虑,这些文件并不保存到数据库.) 定义MEDIA_URL 作为该目录的公共 URL. 要确保该目录对 WEB服务器用户帐号是可写的.
    (2) 在你的 model 中添加 FileField 或 ImageField, 并确保定义了 upload_to 选项,以告诉 Django使用 
    MEDIA_ROOT 的哪个子目录保存上传文件.你的数据库中要保存的只是文件的路径(相对于 MEDIA_ROOT). 
    出于习惯你一定很想使用 Django 提供的 get_<#fieldname>_url 函数.举例来说,如果你的 ImageField 
    叫作 mug_shot, 你就可以在模板中以 {{ object.#get_mug_shot_url }} 这样的方式得到图像的绝对路径.   
    

字段参数

null -> db是否可以为空
default -> 默认值
primary_key -> 主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now -> 更新时,自动更新为当前时间
auto_now_add -> 创建时,自动生成时间
choices -> django admin中显示下拉框,避免连表查询
blank -> django admin是否可以为空
verbose_name -> django admin显示字段中文
editable -> django admin是否可以被编辑
error_messages -> 错误信息欠
help_text -> django admin提示
validators -> django
form, 自定义错误信息(欠)

官方文档: https://docs.djangoproject.com/zh-hans/2.0/ref/models/fields/

Meta的配置

class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    desc = models.CharField(max_length=100,name='description',db_column="description1")

    class Meta:
        db_table = 'book_model'

以下将对Meta类中的一些常用配置进行解释。

  • db_table:
    这个模型映射到数据库中的表名。如果没有指定这个参数,那么在映射的时候将会使用模型名来作为默认的表名。

  • ordering:
    设置在提取数据的排序方式。后面章节会讲到如何查找数据。比如我想在查找数据的时候根据添加的时间排序,那么示例代码如下:

class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    desc = models.CharField(max_length=100,name='description',db_column="description1")
    pub_date = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = 'book_model'
        ordering = ['pub_date']

官方文档: https://docs.djangoproject.com/en/2.0/ref/models/options/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值