Django - model创建数据库表经常使用的字段及参数清单

一、常用字段

  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_fieldwidth_field,如果提供这两个参数,则图片将按提供的高度和宽度规格保存。该字段要求 Python Imaging 库。

  24. models.FilePathField() —选择指定目录按限制规则选择文件,有三个参数可选, 其中”path”必需的,这三个参数可以同时使用, 参数描述:
    (1)path:必需参数,一个目录的绝对文件系统路径。 FilePathField 据此得到可选项目。 Example: “/home/images”;
    (2)match:可选参数, 一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名。 注意这个正则表达式只会应用到 base filename 而不是路径全名。 Example: “foo。*\。txt^”, 将匹配文件 foo23.txt 却不匹配 bar.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 函数。举例来说,如果你的 ImageField 叫作 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_nowauto_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/"     
    
发布了63 篇原创文章 · 获赞 87 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44110998/article/details/102996546
今日推荐