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

Django—模型

Django框架中ORM示意图如下: ? 使用MySQL数据库,这是Web项目首选的数据库。 打开项目的settings.py文件,找到DATABASES项,默认使用SQLite3数据库 ?...模型类必须继承自Model类,位于包django.db.models中。 提示:对于重要数据使用逻辑删除。...当没有为模型类定义管理器时,Django会为每一个模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects。...自定义管理器类主要用于两种情况: 1.修改原始查询集,重写all()方法 2.向管理器类中添加额外的方法,如向数据库中插入数据。 1.修改原始查询集,重写all()方法。...books = BookInfoManager() 2.在管理器类中定义创建对象的方法 对模型类对应的数据表进行操作时,推荐将这些操作数据表的方法封装起来,放到模型管理器类中。

6.1K21

【Django】 开发:数据库操作和后台管理

查询数据 数据库的查询需要使用管理器对象进行 通过 MyModel.objects 管理器方法调用查询接口 方法 说明 all() 查询全部记录,返回QuerySet查询对象 get() 查询符合条件的单一记录...() books.update(market_price=100) 删除数据 删除记录是指删除数据库中的一条或多条记录 删除单个MyModel对象或删除一个查询结果集(QuerySet)中的全部对象都是调用...使用MyModel.objects.raw()进行 数据库查询操作查询 在django中,可以使用模型管理器的raw方法来执行select语句进行数据查询 语法: MyModel.objects.raw...,可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类,为这些模型类提拱数据管理界面,供开发者使用 使用步骤: 建后台管理帐号: 后台管理–创建管理员帐号 $ python3 manage.py...说明: 后台管理器类须继承自 django.contrib.admin 里的 ModelAdmin 类 模型管理器的使用方法: 在 /admin.py 里定义模型管理器类 class XXXXManager

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

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

    在这种情况下,使用 模型方法 比使用自定义的管理器方法要更好。) 自定义的管理器 方法可以返回你想要的任何数据,而不只是查询集。...一个例子就是 Django 自带的django.contrib.gis 应用,所有 gis模型都必须使用一个特殊的管理器类(GeoManager),因为它们需要运行特殊的查询集(GeoQuerySet)...否则 Django 就会使用 django.db.models.Manager. 历史回顾 从它使用目的来看,这个属性的名称(use_for_related_fields)好象有点古怪。...在自动管理器实例中编写正确的管理器 在上面的django.contrib.gis 已经提到了, use_for_related_fields这个特性是在需要返回一个自定义查询集子类的管理器中使用的。...如果你重写了 get_queryset() 方法并且过滤掉了一些行数据,Django 将返回不正确的结果。不要这么做!

    98120

    Django 模型继承 BaseModel

    不过,有时候你只想修改模型的 Python 级行为——可能是修改默认管理器,或添加一个方法。 这是代理模型继承的目的:为原模型创建一个 代理。...你可以创建,删除和更新代理模型的实例,所以的数据都会存储的像你使用原模型(未代理的)一样。不同点是你可以修改代理默认的模型排序和默认管理器,而不需要修改原模型。 代理模型就像普通模型一样申明。...不存在什么方法能在你创建完代理后,帮你替换所有 Person (或其它)模型。 基类约束¶ 一个代理模型必须继承自一个非抽象模型类。...正确的使用多继承,你可以在基类中显示使用 AutoField: class Article(models.Model): article_id = models.AutoField(primary_key...为了达到此目的,创建一个 models 包。删除 models.py,创建一个 myapp/models 目录,包含一个 __init__.py 文件和存储模型的文件。

    2.1K10

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

    路由不必提供所有这些方法 —— 它可以省略一个或多个。如果某个方法缺失,在做相应的检查时Django 将忽略该路由。...这个例子的目的是演示如何使用路由这个基本结构来改变数据库的使用。它有意忽略一些复杂的问题,目的是为了演示如何使用路由。...(using='legacy_users') 多个数据库上使用管理器 在管理器上使用db_manager()方法来让管理器访问非默认的数据库。...(create_user() 方法只能在User.objects上使用,而不能在从管理器得到的QuerySet上使用)。...多数据库上使用get_queryset() 如果你正在覆盖你的管理器上的get_queryset(),请确保在其父类上调用方法(使用super())或者正确处理管理器上的_db属性(一个包含将要使用的数据库名称的字符串

    1.5K20

    后端框架学习-Django

    getlist方法取出所有值,get方法只能取出最后一个值。...说明:该方法只能返回一条数据,直接获得Object 查询结果多于一条则抛出异常;查询结果没有数据则抛出Model.DoesNotExist异常。...1.单个数据删除 查找对应的数据对象 调用该数据对象的delete()方法实现删除 2.批量数据删除 查找QuerySet 调用delete()方法实现删除 3.伪删除操作 通过在表里添加一个布尔型字段...(admin.ModelAdmin): …… 绑定注册模型管理器和模型类,使用调用admin.site.register方法的第二个参数 类属性: class XXXXManager(admin.ModelAdmin...删除&获取 获取:request.COOKIES 删除:request.delete_cookie(key) session 会话保持-登录流程 用户登录->账号密码传至后端,服务器数据库验证,正确则发放

    9.6K40

    django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询

    通常,Django通过将模型的名称和模型的“应用标签”(你在manage.py startapp中使用的名称)进行关联,用一条下划线连接他们,来组合表的名称。...警告 虽然RawQuerySet可以像普通的QuerySet一样迭代,RawQuerySet并没有实现可以在QuerySet上使用的所有方法。...FROM some_other_table''') 只要名字能对应上,模型的实例就会被正确创建。 又或者,你可以在raw()方法中使用翻译参数。...PEP 249并没有说明游标是否可以作为上下文管理器使用。在python2.7之前,游标可以用作上下文管理器,由于魔术方法lookups中意想不到的行为(Python ticket #9220)。...Django 1.7 显式添加了对允许游标作为上下文管理器使用的支持。

    94320

    python技术面试题(二十三)

    + d 查询所有会话使用: screen -ls 暂时离开当前 session 使用: Crtl + a +d 保存进程并退出作业(程序在 screen 中继续运行,screen -ls 可查看) 5..."ps -ef" 是 linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令 "grep filter" 的输入。...git 1.查看当前 git 仓库的状态: git status 2.什么时候使用 git stash: 暂存 3.如何从 git 中删除文件,并将其从文件系统中删除: # 删除文件 rm 文件名...2.with 的执行原理,如何自己实现一个 上下文管理器? 上下文管理器背后工作的机制是使用Python的方法: __enter__和 __exit__。...web 框架 1.在 Django 中如果有一些复杂的 SQL 指令,怎么使用原生的 SQL 命令: 第一种方式:使用游标进行操作 from django.db import connection #

    1.2K10

    Django的Manager和QuerySet

    models本身没有什么需要多说的,Django 使用了一套直观的系统:一个模型类代表一张数据表,一个模型类的实例代表数据库表中的一行记录。 模型类的save方法可以插入,更新,删除数据。...() 会返回包含所有 Person 对象的列表。...除非以下两种情况: 添加额外的 Manager 方法; 修改 Manager 返回的原始 QuerySet。 有关如何自定义Manager,在Django管理器中有详细说明。...使用len()函数求QuerySet的长度,比起使用QuerySet的count()方法效率要低一些,count()方法实际对应于数据库的聚合函数COUNT,它是数据库层面的操作,而非python。...请直接参考Django字段查询 参考资料: 执行查询 QuerySet API参考 管理器

    1.1K30

    已知小问题修正

    这样指定以后所有返回的文章列表都会自动按照 Meta 中指定的顺序排序,因此可以删掉视图函数中对文章列表中返回结果进行排序的代码了。...显示正确的评论量 有两处地方显示的评论量,显示评论量的方法很简单。回顾一下我们是如何获取某篇 post 的下的评论列表的?我们使用的是 post.comment_set.all()。...此外模型管理器(comment_set 是一个特殊的模型管理器)还有一个 count 方法,返回的是数量,即 post 下有多少条评论,我们可以直接在模板中调用这个方法:{{ post.comment_set.count...将评论量替换成该模板变量就可以正确显示文章的评论数了。 结束了么 我们通过一个博客实战项目,了解了 Django 基本的开发技术。...包括如何编写模型(Model)、如何编写视图函数(View)、如何使用 Django 内置的模板系统(Template)以及如何配置路由(URL),这四大模块是 Django 开发的核心所在,现在我们已经能够基本掌握这些模块的使用方法了

    1.2K40

    【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-5数据库操作

    2 查询操作 查询操作我们主要用到了3个方法: get, 查询一条数据. all, 获得所有数据. filter, 根据条件过滤数据....get 方法: 如果你知道只有一个对象满足你的查询,你可以使用管理器的 get 方法,它直接返回该对象....可以使用管理器的 all 方法: all_cags = GoodsCategory.objects.all() all 方法返回包含数据库中所有对象的一个查询结果集。...对结果使用切片语法, 例:获得所有结果集的前两个对象组成的结果集: cags = GoodsCategory.objects.all()[1: 3] filter 方法: all 方法返回了一个包含数据库表中所有记录查询集...3 更新操作 Django 创建和更新对象,使用同一个函数save().

    51920

    如何在Debian 8上安装Django Web框架

    一些不同的方法如下: 从软件包全局安装:官方Debian存储库包含Django软件包,可以使用传统的apt软件包管理器轻松安装。这种方法简单,但不如其他一些方法灵活。...通过pip进行全局安装:pip工具是Python包的软件包管理器。如果安装pip,您可以在各个系统级别轻松安装Django以供任何用户使用。...您可能还注意到Django版本不是最新版本。 通过pip全局安装 如果您希望通过全局安装最新版本的Django,更好的选择是使用pip,一个Python包管理器。首先,我们需要安装pip包管理器。...Django的开发版本,则必须从项目的git存储库下载并安装Django 。...在下面的代码段中,有一些注释掉的示例用于演示ALLOWED_HOSTS指令的正确方法: ~/myproject/myproject/settings.py . . . . . . # The simplest

    2.4K20

    Django admin 一些有用的设置

    , 'caption', 'author', 'publish_time')       #在admin中注册绑定 admin.site.register(Blog, BlogAdmin)   上面方法是将管理器和注册语句分开...还有一种方式是用装饰器,该方法是Django1.7的版本新增的功能: ?...编辑父表之后,再打开子表编辑,而且子表只能一条一条编辑,比较麻烦。 这种情况,我们也是可以处理的,将其放在同一个编辑界面中。...4.设置只读字段  在使用admin的时候,ModelAdmin默认对于model的操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑的。...我们如何修改这个app的名称达到定制的要求呢,其实Django已经在文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。

    2.6K70

    Django admin管理工具的使用、定制及源码解析

    admin组件使用 Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。...在 Python 中,我们可以用多种方法来实现单例模式: 使用模块 使用 __new__ 使用装饰器(decorator) 使用元类(metaclass) (1)使用 __new__ 为了使类只能出现一个实例...4.设置只读字段 在使用admin的时候,ModelAdmin默认对于model的操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑的。...我们知道,django里所有的业务逻辑都是通过访问url从而指向对应的views来实现的,就是说我们想要实现复制数据,就必须有对应的url和views。...最终生成的结果就是可以选择所有的省,也可以选择所有的市,这并不合理,正确的应该是在选择某个省的时候在市的下拉列表里只有该省的城市。 而,django原生并不能做到这么智能。

    4.1K40

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

    删除Choice模型对register()方法的调用。...你在search_fields中使用任意数量的字段,但由于它在后台使用LIKE进行查询,尽量不要添加太多的字段,不然会降低数据库查询能力。 修改列表自带分页功能,默认每页展示100条数据。...最好每一个模板都应该存放在它所属应用的模板目录内(例如polls/templates)而不是整个项目的模板目录(templates),因为这样每个应用才可以被方便和正确的重用。...最好每一个模板都应该存放在它所属应用的模板目录内(例如polls/templates)而不是整个项目的模板目录(templates),因为这样每个应用才可以被方便和正确的重用。...编辑该文件,你会看到文件内使用了一个app_list模板变量。该变量包含了所有已经安装的Django应用。

    3.6K60
    领券