字段
字段名 | 类型 | 备注 |
---|---|---|
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/