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

Web | Django 与数据库交互,你需要知道的 9 个技巧

Django 2.0 中,values_list 方法的参数中添加了一个叫做 named 的属性。...自定义函数(Custom functions) Django 2.0 的 ORM 功能非常强大,而且特性丰富,但还是不能与所有数据库的特性同步。不过幸运的是,ORM让我们用自定义函数来扩展它。...M2M 模型中的另一个常见模式是在两个字段一起作为一个唯一约束。...从第一层的树叶第二层创建一棵新树,以此类推。 索引中的顺序非常重要。 在上面的例子中,我们首先会得到一个组(group)的树,另一个树是所有它的用户(user)。...并不是,数据库特定用例提供其他类型的索引也蛮多的。 从 Django 1.11 开始,有一个新的 Meta 选项用于在模型上创建索引。这给了我们探索其他类型索引的机会。

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

Django中ORM介绍和字段及其参数

id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定 primary_key=True 即可。...如果Django发现你已经明确地设置了Field.primary_key,它将不会添加自动ID。...是否添加 class Meta 到你的 model 完全是可选的. app_label app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候你需要指定你这个模型类是那个应用程序的...比如你在其他地方写了一个模型类,而这个模型类是属于myapp的,那么你这是需要指定为: app_label='myapp' db_table db_table是用于指定自定义数据库表名的。...Django有一套默认的按照一定规则生成数据模型对应的数据库表名,如果你想使用自定义的表名,就通过这个属性指定,比如: table_name='my_owner_table' 若不提供该参数, Django

2.8K80

django 1.8 官方文档翻译:2-1-1 模型语法

如果你想指定一个自定义主键字段,只要在某个字段上指定 primary_key=True 即可。如果 Django 看到你显式地设置了 Field.primary_key,就不会自动添加 id 。...用法和其他字段类型一样:在模型里面做为类属性包含进来。 当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系。 OneToOneField要一个位置参数:与模型关联的类。...自定义字段类型 如果已有的模型字段都不合适,或者你想用到一些很少见的数据库类型的优点,你可以创建你自己的字段类型。创建你自己的字段在编写自定义模型字段中有完整讲述。...模型的方法 可以在模型上定义自定义的方法来给你的对象添加自定义的“底层”功能。Manager 方法用于“表范围”的事务,模型的方法应该着眼于特定的模型实例。...这表示自定义模型类应该继承django.db.models.Model。

4.9K20

django 1.8 官方文档翻译: 2-1-3 元选项 (初稿)

这包括: 如果你不声明它的话,会向你的模型添加一个自增主键。为了避免给后面的代码读者带来混乱,强烈推荐你在使用未被管理的模型时,指定数据表中所有的。...如果你需要修改这一默认行为,创建中介表作为显式的模型(设置managed),并且使用ManyToManyField.through你的自定义模型创建关联。...(/数据表中的)叫做_order,所以如果你在首次迁移之后添加或者修改了order_with_respect_to属性,要确保执行和应用了合适的迁移操作。...增加、删除和修改权限会自动每个模型创建。...proxy Options.proxy 如果proxy = True, 作为该模型子类的另一个模型会被视为代理模型

80330

django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分

哲理 你的员工或客户生成添加、修改和删除内容的管理性网站是个单调乏味的工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。...Django 解决了网站管理员创建统一 的管理界面用以编辑内容的问题。 管理界面不是让网站访问者使用的。它是网站管理员准备的。...通过 admin.site.register(Poll) 注册了 Poll 模型Django 就能构造一个默认的 表单。通常情况下,你将要自定义管理表单的外观和功能。...允许保存时移除已保存过的行。 自定义管理界面的变更列表 现在 Poll 的管理界面看起来不错了,让我们给 “chang list” 页面做些调整 – 显示系统中所有 polls 的页面。...通过这种方式,你可以在任何新项目包括 polls 应用中自定义模板并且放心会找到需要的自定义的模板的。 有关 Django 怎样找到它的模板的更多信息,请参考 模板加载文档 。

2.5K40

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

一些针对其中一个的优化会对另一个不利,但有时会对二者都有帮助。另外,数据库进程做的工作,可能和你在Python代码中做的相同工作不具有相同的开销。...如果这些还不够强大: 使用原始的SQL 编写你自己的自定义SQL语句,来获取数据或者填充模型。...使用django.db.connection.queries来了解Django你编写了什么,以及从这里开始。...另外,当建立起一个带有延迟字段的模型时,要意识到一些(小的、额外的)消耗会在Django内部产生。...但是要注意,这些批量的更新方法不会在单独的实例上面调用save()或者delete()方法,意思是任何你向这些方法添加自定义行为都不会被执行,包括由普通数据库对象的信号驱动的任何方法。

1.1K30

django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)

管理器的名字 通常,django每个模型添加一个名为objects的管理器。...添加额外的管理器方法 你的模型添加表级(table-level)功能时,采用添加额外的管理器方法是更好的处理方式。如果要添加行级功能--就是说该功能只对某个模型的实例对象起作用。...Django 会将模型中定义的管理器解释默认的 管理器,并且 Django 中的一部分应用(包括数据备份)会使用默认的管理器,除了前面那个模型。...解决办法就是在另一个基类中添加新的管理器,然后继承时将其放在默认管理器所在的基类 之后。...在整个这一节中,我们将那种由 Django 你创建的管理器称之为 “自动管理器”,既有因为没有管理器而被 Django 自动添加的默认管理器, 也包括在访问关联模型时使用的临时管理器。

95520

Django 1.10中文文档-第一个应用Part7-自定义管理站点

Django在admin站点中,自动地将所有的外键关系展示一个select框。在我们的例子中,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。...如果在创建Question对象的时候就可以直接添加一些Choice,那样操作将会变得简单些。 删除Choice模型对register()方法的调用。...你可以点击其中一的表头来让列表按照这的值来进行排序,但是was_published_recently这的表头不行,因为Django不支持按照随便一个方法的输出进行排序。...回答是,由于APP_DIRS被设置`True``,Django将自动查找每一个应用路径下的templates/子目录(不要忘了django.contrib.admin也是一个应用)。...快速通道 Django 1.10中文文档-第一个应用Part1-请求与响应 Django 1.10中文文档-第一个应用Part2-模型和管理站点 Django 1.10中文文档-第一个应用

3.6K60

Django 模型继承 BaseModel

如果你在继承父类模型的子类中添加了这些关联,你 必须 指定 related_name 属性。假如你忘了,Django 会抛出一个合法性错误。...不过,有时候你只想修改模型的 Python 级行为——可能是修改默认管理器,或添加一个方法。 这是代理模型继承的目的:模型创建一个 代理。...你需要告诉 Django 这是一个代理模型,通过将 Meta 类的 proxy 属性设置 True。 例如,假设你想为 Person 模型添加一个方法。...在 Django 中,模型字段通常不允许这样做。如果一个非抽象模型基类有一个名为 author 的字段,你就不能在继承自该基类的任何类中,创建另一个名为 author 的模型字段或属性。...参见 自定义管理器和模型继承。

2K10

django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

使用模型 一旦你定义了模型,就要通知Django启用这些模型,你要做的就是修改配置文件中的INSTALLED_APPS 设置,在其中添加models.py所在应用的名称。...如果你想指定一个自定义主键字段,只要在某个字段上指定 primary_key=True 即可。如果 Django 看到你显式地设置了 Field.primary_key,就不会自动添加 id 。...当某个对象想扩展自另一个对象时,最常用的方式就是在这个对象的主键上添加一对一关系。 OneToOneField 需要一个位置参数:与 model 关联的类。...自定义字段类型 如果 Django 自带的字段类型不能满足你的应用,或者你希望使用一些不常见的数据库类型,那你可以创建自定义的字段类型。...Model 方法 自定义 model 的方法,就是你的对象添加自定义的行级功能(row-level),而 Manager 方法却喜欢做表级的事情(table-wide)。

3.1K30

Django 3.1 官网学习路线

Django 支持所有常见的数据库关系:多对一、多对多和一对一。 激活模型 这一小段模型代码 Django 提供了大量信息。...让我们也这个模型添加一个自定义方法: 注意,添加了 import datetime 和 from django.utils import timezone。...保存并添加另一个——保存更改并为这种类型的对象加载一个新的空白表单。 删除-显示删除确认页面。... 第五部分:自定义管理表单 通过将问题模型注册 admin.site.register(Question),Django 能够构造一个默认的表单表示。...还要注意在“问题”旁边的“添加另一个”链接。每一个与其他对象具有 ForeignKey 关系的对象都可以免费得到这个。当你点击“添加另一个”,你会得到一个弹出窗口的“添加问题”形式。

8.1K10

Django教程 —— 站点后台管理

使用Django的管理模块,需要按照如下步骤操作: 管理界面本地化 创建管理员 注册模型自定义管理页面 1、管理界面本地化 本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化,中国大陆地区使用简体中文...Django后台管理对数据库表操作 上篇讲到在项目的 shell 终端对数据库表的操作,现在我们来看看Django后台对数据库表的操作 查询 点击"Book Infos"可以进入列表页,默认只有一。...自定义后台管理界面 在列表页只显示出了 BookInfo object ,对象的其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能。 比如列表页要显示哪些值。...的列表页的变成中文,是因为在 BookInfo 模型类中属性值给了 verbose_name 参数,如果没有给定则显示类属性名。...我们只要在模型添加一个 Meta 类设置相应的属性即可。

2K10

Django 模型自定义Manager和模型方法

每个Django模型至少有一个manager,你可以创建自定义manager以定制数据库的访问....这里有两个方法创建自定义manager:添加额外的manager;修改manager返回的初始Queryset. 添加额外的manager 增加额外的manager是模块添加表级功能的首选办法....例如,Book模型添加一个title_count()的manger方法,它接收一个keyword,并返回标题中包含keyword的书的数量....例如,下面的模型有两个manger--一个返回所有对象,另一个仅返回作者是Roald Dahl的书 from django.db import models #首先,定义一个Manager的子类 class...Django将会把第一个Manager 定义默认Manager ,Django的许多部分(但是不包括admin应用)将会明确地模型使用这个manager。

2.7K20

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

目录 命令 将您的数据库升级到最新 将您的数据库移动到特定的迁移 迁移生成 SQL 生成迁移 将迁移合并到 master 指南 过滤器 索引 删除/表 表 外键 重命名表 添加添加 NOT...相反,只需在 Django 中重命名模型,并确保将 Meta.db_table 设置当前表名,这样不会有任何中断。这是首选方法。...添加 创建新时,它们应始终创建可为空的。这是出于两个原因: 如果存在现有行,添加非空需要设置默认值,添加默认值需要完全重写表。这是危险的,很可能会导致停机 在部署期间,新旧代码混合运行。...如果旧代码尝试向表中插入一行,则插入将失败,因为旧代码不知道新存在,因此无法提供值。 向添加 NOT NULL 将 not null 添加可能很危险,即使该的表的每一行都有数据。...添加具有默认值的 向现有表添加具有默认值的是危险的。这需要 Postgres 锁定表并重写它。相反,更好的选择是: 在 Postgres 中添加没有默认值的,但在 Django添加默认值。

3.6K20

关于“Python”Django 管理网站的核心知识点整理大全52

输出表明Django创建了一个名为0001_initial.py的迁移文件,这个文件将在数据库中 模型Topic创建一个表。...18.2.3 Django 管理网站 应用程序定义模型时,Django提供的管理网站(admin site)让你能够轻松地处理模型。网 站的管理员可使用管理网站,但普通用户不能使用。...例如,Django并不存储你输入的密码,而存储 从该密码派生出来的一个字符串——散值。每当你输入密码时,Django都计算其散 值,并将结果与存储的散值进行比较。...向管理网站注册模型 Django自动在管理网站中添加了一些模型,如User和Group,但对于我们创建的模型,必须 手工进行注册。...我们还 添加了一个省略号,指出显示的并非整个条目。 18.2.5 迁移模型 Entry 由于我们添加了一个新模型,因此需要再次迁移数据库。

14410

探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

将租户引入属于帐户的模型 1.1 向属于某个帐户的模型引入该 1.2 在属于一个帐户的每个 ManyToMany 模型 account_id 引入一个 2....将租户介绍给我们想要分发的缺少它的模型 更改分布式表的主键以包含租户 更新模型以使用 TenantModelMixin 分发数据 将 Django 应用程序更新范围查询 准备横向扩展多租户应用程序...实现这一点的最简单方法是在属于帐户的每个对象上简单地添加一个 account_id 。...1.2 在属于一个帐户的每个 ManyToMany 模型 account_id 引入一个 目标与之前相同。我们希望能够将 ORM 调用和查询路由到一个帐户。...在所有主键和唯一约束中包含 account_id 2.1 将 account_id 包含到主键中 Django 会自动在模型上创建一个简单的 “id” 主键,因此我们需要通过自己的自定义迁移来规避这种行为

2K10
领券