一、Field选项

  • null=True 数据库为空
  • blank=True admin相关为空
  • choices:choices意味着静态数据的变化不会太大。
  • db_column: 用于此字段的数据库的列的名称。如果没有给出,Django将使用该字段的名称
  • db_index: 如果为True,将为此字段创建数据库索引
  • db_tablepace: 如果此字段已经编入索引,则用于此字段索引的数据库表空间的名称。
  • default: 字段的默认值(当创建新的模型实例并且为该字段提供值时使用默认值,当该字段是主键时,也会使用默认值none)
  • editable: 如果为False,该字段将不会显示在管理员或者其他任何人,在验证模型过程中他们将会被跳过, 默认为True
  • error_messages: 该error_messages参数允许你覆盖字段将引发的默认消息。传入一个字典,其中包含与之要覆盖的错误消息相匹配的密钥
  • 错误消息键包括null,blank,invalid,invalid_choice,unique,和unique_for_date。
  • htlp_text:显示额外的‘帮助’文本。即使你的字段未用于表单,对于文档也很有用。请注意,该值在自动生成的表单中不是html转义的。help_text可以包含html
    • help_text="Please use the following format: <em>YYYY-MM-DD</em>."
  • primary_key: 如果为True,设置为主键。如果没有指定任何primary_key,Django会自动添加一个AutoField来保存主键,所以你不需要在任何字段上设置,除非你想覆盖默认的主键行为。
  • unique :如果为True,该字段在整个表格中必须是唯一的.如果unique=true ,则不需要指定db_index,因为unique意味着创建索引。
    • 在旧版本Django1.11.中,unique=True无法使用FileField。
  • unique_for_date: 将其设置为a的名称DateField或DateTimeField要求此字段对于日期字段的值是唯一的
    •  举例来说,如果你有一个字段title有 unique_for_date="pub_date",那么Django的不允许的两个记录具有相同的入口title和pub_date。
  • unique_for_month: 要求字段相对于月份是唯一的

二、字段类型

1、AutoField :一个IntegerField根据可用ID自动递增。你通常不需要直接使用它; 如果不另外指定,主键字段将自动添加到您的模型中。
2、BigAutoField: 一个64位整数,很像一个AutoField不同之处在于它是保证从适合数字1到9223372036854775807。
3、BigIntegerField: 一个64位整数,很像一个IntegerField不同之处在于它是保证从适合数字-9223372036854775808到 9223372036854775807。
4、BinaryField: 用于存储原始二进制数据的字段,它只支持bytes。请注意,该字段的功能有限。例如,对一个BinaryField值过滤查询集是不可能的。也不可能在a BinaryField中包含一个ModelForm。
#注意:滥用 BinaryField尽管您可能会考虑将数据存储在数据库中,但请考虑在99%的情况下这是糟糕的设计。该字段不是正确的静态文件处理的替代品。
5、BooleanField: 真假值
6、CharField: 一个字符串字段,用于小型到大型字符串。
CharField有一个额外的论证:max_length字段的最大长度
7、TextField:对于大量的文字,请使用TextField
8、DateField: 日期,由Python以datetime.date实例表示。有一些额外的可选参数:
  auto_now无论是你添加还是修改对象,时间为你添加或者修改的时间。
  auto_now_add为添加时的时间,更新对象时不会有变动。 9、DateTimeField: 日期和时间,由Python以datetime.datetime实例表示。
10、DecimalField: 一个固定精度的十进制数,用Python在 Decimal实例中表示。
  DecimalField.max_digits
  数字中允许的最大位数。请注意,此数字必须大于或等于decimal_places。   DecimalField.decimal_places  号码一起存储的小数位数。   例如,要存储999分辨率为2位小数的数字,您可以使用:   models.DecimalField(..., max_digits=5, decimal_places=2)
11、DurationField: 用于存储时间段的字段 - 由Python在Python中建模 timedelta
12、EmailField: 检查该值是否为有效的电子邮件地址。
13、FileField: 文件上传字段
  class FileField(upload_to = None,max_length = 100,** options)[source] ¶
  在模型中使用FileField或ImageField(见下文)需要几个步骤:   在你的设置文件中,你需要定义MEDIA_ROOT一个你想要Django存储上传文件的目录的完整路径。(对于性能,这些文件不存储在数据库中。)定义 MEDIA_URL为该目录的基本公用URL。确保该目录可由Web服务器的用户帐户写入。
  将FileField或添加ImageField到您的模型中,定义upload_to选项以指定MEDIA_ROOT用于上传文件的子目录 。
  所有将存储在数据库中的文件都是路径(相对于MEDIA_ROOT)。你很可能想使用urlDjango提供的便利属性。例如,如果你ImageField被调用 mug_shot,你可以在模板中获得图像的绝对路径 。{{ object.mug_shot.url }}
  例如,假设您MEDIA_ROOT的设置为'/home/media',并且 upload_to设置为'photos/%Y/%m/%d'。所述'%Y/%m/%d' 的部分upload_to被strftime()格式化; '%Y'是四位数的一年,'%m'是两位数的月份,'%d'是两位数的一天。如果您在2007年1月15日上传文件,它将被保存在目录中/home/media/photos/2007/01/15。
#使用
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
urls.py
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}), 14、FilePathField :仅限于文件系统上某个目录中的文件名。
15、FilePathField.path¶
需要。文件系统的绝对路径,从这个目录中 FilePathField选择。例如:"/home/images"。
    FilePathField.match:可选的。作为字符串的正则表达式,FilePathField 用于过滤文件名。请注意,正则表达式将应用于基本文件名,而不是完整路径。例如:"foo.*\.txt$",它将匹配一个叫做foo23.txt但不是bar.txt或的文件foo23.png。
  FilePathField(path="/home/images", match="foo.*", recursive=True) 16、FloatField:由float实例在Python中表示的浮点数。
17、ImageField:继承所有的属性和方法FileField,但也验证上传的对象是有效的图像。 除了可用于特殊属性FileField,一个ImageField也具有height和width属性。 为了便于查询这些属性,ImageField有两个额外的可选参数: ImageField.height_field¶
每次保存模型实例时将自动填充图像高度的模型字段的名称。 ImageField.width_field¶
每次保存模型实例时将使用图像宽度自动填充模型字段的名称。 18、IntegerField:整型
19、GenericIPAddressField:字符串格式的IPv4或IPv6地址(例如192.0.2.30或 2a02:42fe::4)。
20、NullBooleanField: 像一个BooleanField,但允许NULL作为其中一个选项。
21、PositiveIntegerField: 正整数
22、TextField: 一个大文本字段。该字段的默认表单小部件是a Textarea。
23、TimeField: 一段时间,由一个datetime.time实例在Python中表示。接受相同的自动填充选项DateField。
24、URLField:A CharField代表一个URL。
  UUIDField: 用于存储通用唯一标识符的字段。使用Python的 UUID类。在PostgreSQL上使用时,它将以uuid数据类型存储 ,否则以char(32)。   通用唯一标识符是AutoFieldfor的 一个很好的选择primary_key。数据库不会为您生成UUID,因此建议使用default:
  
  import uuid
  from django.db import models   class MyUUIDModel(models.Model):
  id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
  # other fields
  请注意,可调用(使用括号省略)传递给default,而不是一个实例UUID。

三、关系领域

ForeignKey:一对多
  classForeignKey(to,on_delete,** options)
  on_delete对应的值:
    CASCADE:级联删除,Django模拟SQL约束ON DELETE CASCADE的行为,并删除包含ForeignKey的对象。
    limit_choices_to: 设置指定的字段

django 学习之model操作(想细化)的更多相关文章

  1. django学习之Model(二)

    继续(一)的内容: 1-跨文件的Models 在文件头部import进来,然后用ForeignKey关联上: from django.db import models from geography.m ...

  2. Python学习笔记整理总结【Django】:Model操作(二)

    1.操作汇总 # 增 # # models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs # obj = models ...

  3. Python学习笔记整理总结【Django】:Model操作(一)

    Model操作(一) 一.Django ORM基本配置 ORM:关系对象映射(Object Relational Mapping,简称ORM)db Frist:到目前为止,当我们的程序涉及到数据库相关 ...

  4. django学习之Model(一)

    认认真真学Django,从现在开始. 学习资料来源于官方网站:https://docs.djangoproject.com/en/1.6/ 1-新建一个models.py from django.db ...

  5. Python开发【Django】:Model操作(二)

    Model操作 1.操作汇总: # 增 # # models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs # obj ...

  6. Python开发【Django】:Model操作(一)

    Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...

  7. django学习之Model(五)MakingQuery

    接着上篇. 10-一次更新多个对象 有时想要对QuerySet中的所有对象的某一个field来设定一个值,这时候可以像下边这样用update(): # Update all the headlines ...

  8. django学习之Model(三)QuerySet

    接下来主要学习Models中的Making queries 写好models.py后,django会自动提供一个数据库的抽象API,来实现CRUD(create, retrieve, update, ...

  9. django学习之Model(四)MakingQuery

    上一篇写到MakingQuey中的filter,本篇接着来. 10)-扩展多值的关系 如果对一个ManyToManyField或ForeignKey的表进行filter过滤查询的话,有2中方法可以用. ...

随机推荐

  1. elasticsearch备忘

    1.解决java.lang.RuntimeException: can not run elasticsearch as rootadduser *** //添加用户passwd *** //给用户赋 ...

  2. wkhtmltopdf错误解决办法

    Odoo/openerp 打印报表时,无法输出PDF格式,提示下面的错误Unable to find Wkhtmltopdf on this system. The report will be sh ...

  3. storm中worker、executor、task之间的关系

    这里做一些补充: worker是一个进程,由supervisor启动,并只负责处理一个topology,所以不会同时处理多个topology. executor是一个线程,由worker启动,是运行t ...

  4. CTRL+SHIFT

    CTRL+SHIFT+鼠标左右,上下拖动,可快速实现平行和垂直上下复制的功能,

  5. django之创建第4-3个项目-访问list数据

    1.index <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. Android 仿知乎创意广告

    代码地址如下:http://www.demodashi.com/demo/14904.html 一.概述 貌似前段时间刷知乎看到的一种非常有特色的广告展现方式,即在列表页,某一个Item显示背后部分广 ...

  7. Region使用全解

    代码地址如下:http://www.demodashi.com/demo/14799.html 前言 Region,即为区域,它表示的是canvas图层上的某一块封闭的区域.很多时候,我们会利用Reg ...

  8. HDU 2217 Data Structure?

    C - Data Structure? Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  9. 【linux】linux 环境下 安装禅道(转载) -- 跟web服务器无关,无视apache、nginx!!!

    下载地址:http://www.zentao.net/download/zentao10.0.beta-80076.html 参考文章 链接 :https://blog.csdn.net/xinxin ...

  10. iOS 开发 Pch 文件的正确使用

    在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件 ...