首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作

django中是有时区的概念的,使用时要考虑到时区的问题,默认使用的是 UTC时区,分为 navie(没时区) 和 aware(有时区),如果项目不是国际的,可以我们将时区关闭,使用本地的时间。...模型中Meta配置 对于一些模型级别的配置。我们可以模型中定义一个类,叫做Meta。然后在这个类中添加一些类属性来控制模型的作用。...比如我们想要在数据库映射的时候使用自己指定的表名,不是使用模型的名称。那么我们可以Meta类中添加一个db_table的属性。...SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。 6.DO_NOTHING:不采取任何行为。一切全看数据库级别约束。...以上这些选项只是Django级别的,数据级别依旧是RESTRICT!

3.9K30

Django模型最佳实践

通过“迁移操作”(migrate)来添加模型。 用NoSQL来应对需要降低范式级别的场景。 如果布尔类型可以为空要使用NullBooleanField。 模型中放置业务逻辑。...用DecimalField来存储货币相关数据不是FloatField。 定义__str__方法。 不要将数据文件放在同一个目录中。...NULL,默认为False blank 后台模型管理验证数据时,是否允许为NULL,默认为False choices 设定字段的选项,各元组中的第一个值是设置模型上的值,第二值是人类可读的值 db_column...db_constraint:是否为外键创建约束,默认值为True。...throughfields:定义了中间模型可以指定建立多对多关系的字段。 db_table:指定维持多对多关系的中间表的表名。

2.2K40
您找到你想要的搜索结果了吗?
是的
没有找到

模型常用属性

blank: 标识这个字段表单验证的时候是否可以为空。默认是False。 这个和null是有区别的,null是一个纯数据库级别的。blank是表单验证级别的。...Meta配置: 对于一些模型级别的配置。...我们可以模型中定义一个类,叫做Meta。然后在这个类中添加一些类属性来控制模型的作用。比如我们想要在数据库映射的时候使用自己指定的表名,不是使用模型的名称。...那么我们可以Meta类中添加一个db_table的属性。...db_table: 这个模型映射到数据库中的表名。如果没有指定这个参数,那么映射的时候将会使用模型名来作为默认的表名。 ordering: 设置提取数据的排序方式。后面章节会讲到如何查找数据。

87630

Sentry 开发者贡献指南 - 数据库迁移

这是删除已经可以为空的列的示例。首先我们从模型中删除列,然后修改迁移以仅更新状态不进行数据库操作。...下一阶段涉及从代码库中删除对模型的所有引用。所以我们这样做,然后我们生成一个迁移,从迁移状态中删除模型不是数据库。...您仍然可以创建 Django 级别的外键,而无需创建数据库约束。为此,请在定义键时设置 db_constraint=False。 重命名表 重命名表很危险,会导致停机。...有两种方法可以处理重命名表: 不要在 Postgres 中重命名表。相反,只需 Django 中重命名模型,并确保将 Meta.db_table 设置为当前表名,这样不会有任何中断。这是首选方法。... Postgres 12 之后,我们可以扩展这个方法来添加一个真正的 NOT NULL 约束。 如果表足够小并且体积足够小,那么创建一个普通的 NOT NULL 约束应该是安全的。

3.6K20

django 外键引用自身和on_delete参数

模型使用外键引用自己本身。...如果我们强行删除,Django就会报错。 SET_NULL:设置为空。如果外键的那条数据被删除了,那么本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。...一切全看数据库级别约束。...注意:以上的配置都是django级别的,在数据库中的级别依旧是RESTRICT 数据库层面的约束有: RESTRICT:默认的选项,如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录...进行删除A表数据时,发现被外键约束着,使数据不能被删除,则django会先去删除约束的B表数据,然后再来删除A表数据。

1.3K20

Django 2.0 新特性 转

以前版本的django.conf.urls.url()方法变成了django.urls.re_path(),但为了向后兼容,旧的依然保留,不是立刻废弃。...方法,支持PostGIS和SpatiaLite; 所有从GeoJSON导入的GEOSGeometry拥有SRID集合; 添加OSMWidget.default_zoom属性,用于自定义地图的默认缩放级别...方法,用于DateField和DateTimeField; 新增TruncQuarter方法用于截取DateField和DateTimeField到季度的第一天; 为基于类的索引添加db_tablespace...,现在它将返回配置TEMPLATES中的多个DjangoTemplates引擎中的第一个,不是弹出ImproperlyConfigured错误; 自定义模版标签现在接收强制关键字参数; Tests测试...SQLite现在支持外键约束 另外,Django2.0还废弃和移除了一些方法和属性。 总结: 好像也没多大变化,不是重度使用者,基本感受不出变化来,该怎么用还是怎么用,^-^!

2.6K20

django 1.8 官方文档翻译: 2-4-3 模式编辑器

unique_together值;这会向模型表中添加或者删除唯一性约束,使它们匹配新的值。...如果该字段带有db_index=True或者 unique=True,同时会添加索引或者唯一性约束。...如果字段为ManyToManyField并且缺少 through值,会创建一个表来表示关系,不是创建一列。如果提供了through值,就什么也不做。...这包括列名称的修改(db_column属性)、字段类型的修改(如果修改了字段类)、字段NULL状态的修改、添加或者删除字段层面的唯一性约束和索引、修改主键、以及修改ForeignKey约束的目标。...当你多种数据库之间执行迁移的时候,这是非常有用的。 译者:Django 文档协作翻译小组,原文:SchemaEditor。

95020

Django 1.10中文文档-第一个应用Part2-模型和管理站点

这不仅在数据库模式中使用,而且验证中使用。 Field还可以有各种可选参数;在上例中,我们将votes的默认值设置为0。 最后,使用ForeignKey定义关系。...(你也可以重写这个行为); 按照惯例,Django会在外键的字段名后面添加 "_id"。(你依然可以重写这个行为); 外键关系由FOREIGN KEY约束显式声明。...就是使你的数据库模式和你改动后的模型进行同步。 迁移功能非常强大,可以让你在开发过程中不断修改你的模型不用删除数据库或者表然后再重新生成一个新的 —— 它专注于升级你的数据库且不丢失数据。...编辑Question模型polls/models.py文件中)并添加一个str()方法给Question和Choice: # polls/models.py from django.db import...def __str__(self): return self.choice_text 模型添加__str __()方法非常重要,不仅仅是为了方便您处理交互式提示时,而且Django

2.3K60

【Python全栈100天学习笔记】Day41 Django深入理解框架

OK 执行完数据模型迁移操作之后,可以通过图形化的MySQL客户端工具查看到E-R图(实体关系图)。 利用Django后台管理模型 Django框架有自带的后台管理系统来实现对模型的管理。...,可以为Dept和Emp两个模型添加__str__魔法方法。...通过“迁移操作”(migrate)来添加模型。 用NoSQL来应对需要降低范式级别的场景。 如果布尔类型可以为空要使用NullBooleanField。 模型中放置业务逻辑。...NULL,默认为False blank 后台模型管理验证数据时,是否允许为NULL,默认为False choices 设定字段的选项,各元组中的第一个值是设置模型上的值,第二值是人类可读的值 db_column...db_constraint:是否为外键创建约束,默认值为True。

2.2K30

Django(14)模型中常用的属性(超详细)

auto_now_add:每次数据第一次被添加进去的时候,都使用当前的时间。比如作为一个记录第一次入库的字段,可以将这个属性设置为True。...Field中的常用参数 每个模型的字段都允许设置参数,这些参数来自己父类Field 字段 说明 null 如果设置为True,Django将会在映射表的时候指定是否为空。默认是为False。...blank 标识这个字段表单验证的时候是否可以为空。默认是False。这个和null是有区别的,null是一个纯数据库级别的。blank是表单验证级别的。...db_column 这个字段在数据库中的名字。如果没有设置这个参数,那么将会使用模型中属性的名字。 default 默认值。可以为一个值,或者是一个函数,但是不支持lambda表达式。...primary_key 是否为主键。默认是False。 unique 表中这个字段的值是否唯一。一般是设置手机号码/邮箱等。

82230

Django教程 —— 模型类详解

引言 之前的 Django模型设计 中简单的介绍了如何定义模型类,在这篇中将做一个汇总。让大家更加了解Django模型类。...定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下: 属性 = models.字段类型(选项) 模型类的字段类型 使用时需要引入django.db.models 包 from django.db...editable bool 类型,Admin里是否可编辑, help_text Admin 中提示帮助信息 upload_to 指文件上传到哪个位置 null 是数据库范畴的概念,blank 是表单验证范畴的...models.ForignKey() 外键约束 ,定义 ‘多类’ 中 多对多 models.ManyToManyField() 定义在哪一个模型类中都行 一对一 models.OneToOneField...数据表的默认名称为: _ 例: booktest_bookinfo 例如: BookInfo 模型类中添加如下内容,代码如下: from django.db

1.7K20

37.Django1.11.6文档

如果你继承一个已经存在的模型且想让每个模型具有它自己的数据库表,那么应该使用多表继承。 最后,如果你只是想改变一个模块Python 级别的行为,不用修改模型的字段,你可以使用代理模型。...不是模型的DoesNotExist 异常。...继续上面的示例,以下检查用户是否可以查看任务: user.has_perm('app.view_task') 扩展现有的User模型 有两种方法来扩展默认的User模型不用替换你自己的模型。 ...替换User模型 某些类型的项目可能有特殊的认证需求,Django内建的User模型不可能总是适用。 例如,某些网站上使用邮件地址不是用户名作为身份的标识可能更合理。...我们建议您将此标志设置为False不是删除帐户;这样,如果您的应用程序对用户有任何外键,则外键不会中断。 它不是用来控制用户是否能够登录。

24.3K80

美多商城项目(一)

Django里面不需要定义模型类了。 Django的认证系统已经为我们提供了一个用户模型类,还提供了认证和授权功能。 Django认证机制依赖于session机制,但我们使用JWT认证机制。...is_staff是否可以访问admin站点,相当于之前我们用的is_admin is_superuser超级管理员 系统的模型类中,缺少我们需要的一些字段,那么我们可以自定义用户模型类,采用继承就可以解决这个问题...迁移之前,我们需要在配置文件中设置一下,否则,系统不知道我们定义了模型类。 # AUTH_USER_MODEL = '子应用.模型类' # 这里不是路径,只是一个格式,注意即可。...特点: 1.任务执行者的进程可以单独在其他电脑上进行创建。 2.中间人又叫做任务队列,先添加到队列中的任务消息会先被worker所执行。 3.生产者-消费者模型。...注意:如果想通过一个域名访问到Django网站服务器,需要将域名添加到 ALLOWED_HOSTS中。

1.3K31

Django模型

Django模型 Django模型定义models.py文件中。模型是MVT中的M,也相当于MVC中的M。 Django中,模型必须继承自Model类。...app应用名_小写模型类名为数据库表名,一般我们会通过db_table指明数据库表名。...自Django3.2后,可以settings.py中配置DEFAULT_AUTO_FIELD参数来设置主键的数据类型,默认是DEFAULT_AUTO_FIELD = ‘django.db.models.BigAutoField...外键 外键这个东西,通常都是在业务逻辑层面来实现的,不是在数据库中实现。但是通常大家学习的数据库课程中,都会有数据库设计范式,其中有个第三范式就是专指的外键约束。在这里只是简单的介绍一下。...二元组的第一个值会储存在数据库中,第二个值将只会用于表单中显示。对于一个模型实例,要获取该字段二元组中相对应的第二个值,使用 get_FOO_display() 方法。

1.9K20

2017年8月13日

django 模板如果需要应用某个变量或模块,可以一个view里写一个函数,返回 字典值,再通过settings.py的TEMPLATE的context_processors中进行注册即可。...下的日志使用INFO级别,并且不向上(django日志)传递, # 原因是如果使用DEBUG级别,碰到不存在的变量会在debug里打印错误栈帧 'django.template':...值里有使用的处理器handler,level是本应用的日志级别,propagate表示是否向上传达。 向上传达的意思是django.template如果向上传达,会传达到django模块。...这里遇到了一个django的bug,即当django.template会在日志级别为DEBUG时再render Template 时遇到没有的变量以DEBUG级别打印错误栈帧轨迹(即使判断了{%if xxx...中执行原生sql from django.db import connection, transactiondef db_execute_with_trasaction(sql, *param): with

62560

django 1.8 官方文档翻译: 2-5-6 多数据库

allow_migrate(db, app_label, model_name=None, **hints) 定义迁移操作是否允许别名为db的数据库上运行。...为了保持两个对象之间的关联,Django 需要知道关联对象的主键是合法的。如果主键存储另外一个数据库上,判断一个主键的合法性不是很容易。...如果你正在使用Postgres、Oracle或者MySQ 的InnoDB,这是数据库完整性级别的强制要求 —— 数据库级别的主键约束防止创建不能验证合法性的关联。...因为跨数据库的关联是不可能的,这对你如何在数据库之间划分这些模型带来一些限制: contenttypes.ContentType、sessions.Session和sites.Site 可以存储分开存储不同的数据库中...(包括不是存储同一个数据库中的模型)。

1.5K20

Django项目第一天

Django里面不需要定义模型类了。 Django的认证系统已经为我们提供了一个用户模型类,还提供了认证和授权功能。 Django认证机制依赖于session机制,但我们使用JWT认证机制。...is_staff是否可以访问admin站点,相当于之前我们用的is_admin is_superuser超级管理员 系统的模型类中,缺少我们需要的一些字段,那么我们可以自定义用户模型类,采用继承就可以解决这个问题...迁移之前,我们需要在配置文件中设置一下,否则,系统不知道我们定义了模型类。 # AUTH_USER_MODEL = '子应用.模型类' # 这里不是路径,只是一个格式,注意即可。...特点: 1.任务执行者的进程可以单独在其他电脑上进行创建。 2.中间人又叫做任务队列,先添加到队列中的任务消息会先被worker所执行。 3.生产者-消费者模型。...注意:如果想通过一个域名访问到Django网站服务器,需要将域名添加到 ALLOWED_HOSTS中。

68520

Django小技巧22: 设计一个好的模型

其中有很多与命名约定有关, 这可以大大的提高代码的可读性。 PEP8规范, 广泛用于 Python 领域, 因此我建议你项目中使用它. 除了 PEP8 , 我更喜欢Django编程风格....模型的定义是对单个对象的表示, 不是公司的集合. 这通常会导致混淆,因为我们倾向于通过数据库思考。模型最终被翻译成table.该表使用其复数形式命名的.... DJango 中,我们可以通过Company.objects来访问集合. 我可以通过定义models.Manager重命名objects属性....Blank 和 Null 我另一篇文章有讲过两者的区别 Blank or Null,在这里我会总结一下. null: 数据库相关; 定义数据库字段的值是否接受空值。...在数据库级别上, 该字段可以为 NULL, 但在应用程序级别上, 它是必填字段(前提你通过 Django 标准的 Form 进行判断)。

87320

Django(15)外键和表关系

外键删除操作 如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下: CASCADE:级联操作。...SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。 DO_NOTHING:不采取任何行为。一切全看数据库级别约束。...注意:以上这些选项只是Django级别的,数据级别依旧是RESTRICT! 表关系 表之间的关系都是通过外键来进行关联的。表之间的关系,无非就是三种关系:一对一、一对多、多对多等。...那么可以OneToOneField中添加一个related_name参数。...我们使用多对多反向引用添加的时候,只能使用add这种添加方式,比如向文章中添加标签,示例代码如下: article = Article.objects.first() tag = Tag(name="

2.1K40

35.Django2.0文档

如果只想在上级代码块基础上添加内容,不是全部重载,该变量就显得非常有用了。 不允许同一个模板中定义多个同名的 {% block %} 。...当我们打印整个publisher列表时,我们没有得到想要的有用信息,只需要为Publisher对象添加一个__str__方法 ,就可以对Publisher对象更容易理解 from django.db import...5.自定义ModelAdmi类  迄今为止,我们做的blank=True、null=True和verbose_name修改其实是模块级别不是管理级别的。...成员标志:它用来控制这个用户是否可以登录管理界面(即:这个用户是不是你们组织里的成员) 由于用           户系统可以被用于控制公众页面(即:非管理页面)的访问权限(详见第十四章),这个标志可用来区分...例如,你可以给一个用户添加和修改publishers的权限,不给他删除的权限。 请注意,这些权限是定义模块级别上,不是对象级别上的。

11.3K100
领券