Django-model创建数据库表经常使⽤的字段及参数清单
⼀、常⽤字段
django admin 自定义页面1. models.AutoField() —⾃增列 = int(11) 如果没有的话,默认会⽣成⼀个名称为 id 的列,如果要显⽰的⾃定义⼀个⾃增列,必须将
给列设置为主键primary_key=True。
2. models.CharField() —字符串字段 单⾏输⼊,⽤于较短的字符串,如要保存⼤量⽂本, 使⽤ TextField。必须 max_length='最⼤长度'
参数,django会根据这个参数在数据库层和校验层限制该字段所允许的最⼤字符数。
3. models.BooleanField() —布尔类型=tinyint(1) 不能为空,Blank=True
4. models.ComaSeparatedIntegerField() —⽤逗号分割的数字=varchar 继承CharField,所以必须 max_lenght 参数,
5. models.DateField() —⽇期类型 date 对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第⼀次创建
添加,之后的更新不再改变。
6. models.DateTimeField() —⽇期类型 datetime 同DateField的参数
7. models.Decimal() —⼗进制⼩数类型 = decimal 必须指定整数位max_digits和⼩数位decimal_places
8. models.EmailField() —字符串类型(正则表达式邮箱) =varchar 对字符串进⾏正则表达式 ⼀个带有检查 Email 合法性的
CharField,不接受 maxlength 参数。
9. models.FloatField() —浮点类型 = double 浮点型字段。 必须提供两个 参数, 参数描述:
(1)max_digits:总位数(不包括⼩数点和符号)
(2)decimal_places:⼩数位数。如:要保存最⼤值为 999 (⼩数点后保存2位),你要这样定义字段:
models.FloatField(…,max_digits=5, decimal_places=2),要保存最⼤值⼀百万(⼩数点后保存10位)的话,你要这样定义:models.FloatField(…,max_digits=19, decimal_places=10)
10. models.IntegerField() —整形 ⽤于保存⼀个整数
11. models.BigIntegerField() —长整形
integer_field_ranges = {
‘SmallIntegerField’: (-32768, 32767),
‘IntegerField’: (-2147483648, 2147483647),
‘BigIntegerField’: (-9223372036854775808, 9223372036854775807),
‘PositiveSmallIntegerField’: (0, 32767),
‘PositiveIntegerField’: (0, 2147483647),
}
12. models.IPAddressField() —字符串类型(ip4正则表达式) ⼀个字符串形式的 IP 地址, (如 “202.1241.30″)。
13. models.GenericIPAddressField() —字符串类型(ip4和ip6是可选的) 参数protocol可以是:both、ipv4、ipv6 验证时,会根据
设置报错
14. models.NullBooleanField() —允许为空的布尔类型 类似 BooleanField, 不过允许 NULL 作为其中⼀个选项。 推荐使⽤这个字段
⽽不要⽤ BooleanField 加 null=True 选项。 admin ⽤⼀个选择框<select> (三个可选择的值: “Unknown”, “Yes” 和“No” ) 来表⽰这种字段数据。
15. models.PositiveIntegerField() —正Integer 类似 IntegerField, 但取值范围为⾮负整数(这个字段应该是允许0值的…可以理解为
⽆符号整数)
16. models.PositiveSmallIntegerField() —正smallInteger 正⼩整型字段,类似 PositiveIntegerField, 取值范围较⼩(数据库相
关)SlugField“Slug” 是⼀个报纸术语。 slug 是某个东西的⼩⼩标记(短签), 只包含字母,数字,下划
线和连字符。它们通常⽤于URLs。 若你使⽤ Django 开发版本,你可以指定 maxlength。 若 maxlength 未指定, Django 会使⽤默认长度: 50,它接受⼀个额外的参数:prepopulate_from: 来源于slug的⾃动预置列表
17. models.SlugField() —减号、下划线、字母、数字 它们通常⽤于URLs。
18. models.SmallIntegerField() —数字 数据库中的字段有:tinyint、smallint、int、bigint. 类似 IntegerField, 不过只允许某个取值
范围内的整数。(依赖数据库)
19. models.TextField() —字符串=longtext ,⼀个容量很⼤的⽂本字段, admin 管理界⾯⽤ 多⾏编辑框表⽰该字段数据。
20. models.TimeField() —时间 HH:MM[:ss[.uuuuuu]] 时间字段,类似于 DateField 和 DateTimeField。
21. models.URLField() —字符串,地址正则表达式 ⽤于保存URL。若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是
否存在(即URL是否被有效装⼊且没有返回404响应).
22. models.BinaryField() —⼆进制
23. models.ImageField() —图⽚ 类似 FileField, 不过要校验上传对象是否是⼀个合法图⽚。它有两个可选参数:height_field 和
width_field,如果提供这两个参数,则图⽚将按提供的⾼度和宽度规格保存。该字段要求 Python Imaging 库。
24. models.FilePathField() —选择指定⽬录按限制规则选择⽂件,有三个参数可选, 其中”path”必需的,这三个参数可以同时使⽤,
参数描述:
(1)path:必需参数,⼀个⽬录的绝对⽂件系统路径。 FilePathField 据此得到可选项⽬。 Example: “/home/images”;
(2)match:可选参数, ⼀个正则表达式, 作为⼀个字符串, FilePathField 将使⽤它过滤⽂件名。 注意这个正则表达式只会应⽤到 base filename ⽽不是路径全名。 Example: “foo。*\。txt^”, 将匹配⽂件 却不匹配 或 foo23.gif;
(3)recursive:可选参数, 是否包括 path 下全部⼦⽬录,True 或 False,默认值为 False。
match 仅应⽤于 base filename, ⽽不是路径全名。
如:FilePathField(path=”/home/images”, match=”foo.*”,recursive=True)…会匹配/home/images/foo.gif ⽽不匹配 /home/images/foo/bar.gif
25. models.FileField() —⽂件上传字段。 要求⼀个必须有的参数: upload_to, ⼀个⽤于保存上载⽂件的本地⽂件系统路径。 这个路径
必须包含 strftime formatting, 该格式将被上载⽂件的 date/time 替换(so that uploaded files don’t fill up the given
directory)。在⼀个 model 中使⽤ FileField 或 ImageField 需要以下步骤:在你的 settings ⽂件中, 定义⼀个完整路径给
MEDIA_ROOT 以便让 Django在此处保存上传⽂件。 (出于性能考虑,这些⽂件并不保存到数据库。) 定义 MEDIA_URL 作为该⽬录的公共 URL。 要确保该⽬录对 WEB 服务器⽤户帐号是可写的。在你的 model 中添加 FileField 或 ImageField, 并确保定义了upload_to 选项,以告诉 Django 使⽤ MEDIA_ROOT 的哪个⼦⽬录保存上传⽂件。你的数据库中要保存的只是⽂件的路径(相对于MEDIA_ROOT)。 出于习惯你⼀定很想使⽤ Django 提供的 get__url 函数。举例来说,如果你的 Imag
eField 叫作 mug_shot, 你就可以在模板中以 {{ object。get_mug_shot_url }} 这样的⽅式得到图像的绝对路径。
26. models.PhoneNumberField() —⼀个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)
27. models.USStateField() —美国州名缩写,由两个字母组成。
28. models.XMLField() —XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:
schema_path:校验⽂本的 RelaxNG schema 的⽂件系统路径。
⼆、参数
1. null=True
数据库中字段是否可以为空
2. blank=True
django的 Admin 中添加数据时是否可允许空值
3. primary_key = False
主键,对AutoField设置主键后,就会代替原来的⾃增 id 列
4. auto_now 和 auto_now_add
auto_now ⾃动创建—⽆论添加或修改,都是当前操作的时间
auto_now_add ⾃动创建—永远是创建时的时间
5. choices
GENDER_CHOICE =(
(u'M', u'Male'),
(u'F', u'Female'),
)
#这⾥我们⽤在内存创建⼀个关联,来取代再创建⼀个简单的表来关联
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6. max_length 最⼤长度
7. default 默认值
8. verbose_name Admin中字段的显⽰名称
9. name|db_column 数据库中的字段名称
10. unique=True 不允许重复
例如⽤户名注册时候是不允许重复的,在username字段⾥设置,不让重复
11. db_index = True 数据库索引
12. editable=True 在Admin⾥是否可编辑
13. error_messages=None 错误提⽰
#把错误提⽰修改成你想要的报错,这⾥加个字典来完成
gender = models.CharField(max_length=2,choices = GENDER_CHOICE,error_messages={"错误类型":"错误原因"})
14. auto_created=False ⾃动创建
15. help_text 在Admin中提⽰帮助信息
16. validators=[] 提⽰区间,例如电话号码范围
17. upload-to ⽂件上传功能 在 FileField ⾥加⼊
#指明上传的⽂件防⽌根⽬录下的/upload/⽂件夹下
file= modles.FileField(upload-to ="./upload/"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论