当前位置: 首页 > 编程笔记 >

基本的Django DB查询

鲍建业
2023-03-14
本文向大家介绍基本的Django DB查询,包括了基本的Django DB查询的使用技巧和注意事项,需要的朋友参考一下

示例

Django ORM是功能强大的抽象,可让您从数据库存储和检索数据,而无需自己编写sql查询。

假设以下模型:

class Author(models.Model):
   name = models.CharField(max_length=50)

class Book(models.Model): 
   name = models.CharField(max_length=50)
   author = models.ForeignKey(Author)

假设您已将以上代码添加到django应用程序中并运行migrate命令(以便创建数据库)。通过以下方式启动Django Shell

pythonmanage.pyshell

这将启动标准python shell,但会导入相关的Django库,以便您可以直接关注重要部分。

首先导入我们刚刚定义的模型(我假设这是在文件中完成的models.py)

from .models import Book, Author

运行您的第一个选择查询:

>>> Author.objects.all() []
>>> Book.objects.all()[]

让我们创建一个作者和书籍对象:

>>> hawking = Author(name="Stephen hawking")
>>> hawking.save()>>> history_of_time = Book(name="history of time", author=hawking)
>>> history_of_time.save()

或使用create函数创建模型对象并保存在一行代码中

>>> wings_of_fire = Book.objects.create(name="Wings of Fire", author="APJ Abdul Kalam")

现在运行查询

>>> Book.objects.all()[<Book: Book object>]
>>> book = Book.objects.first() #getting the first book object
>>> book.name
u'history of time'

让我们在我们的选择查询中添加一个where子句

>>> Book.objects.filter(name='nothing')
[]
>>> Author.objects.filter(name__startswith='Ste')
[<Author: Author object>]

获取有关给定书作者的详细信息

>>> book = Book.objects.first() #getting the first book object
>>> book.author.name # lookup on related model
u'Stephen hawking'

获取斯蒂芬·霍金(Stephen Hawking)发行的所有书籍(作者的查阅书)

>>> hawking.book_set.all()[<Book: Book object>]

_set是用于“反向查找”的符号,即当查找字段在Book模型上时,我们可以book_set在author对象上使用它来获取他/她的所有书籍。

 类似资料:
  • 问题内容: 我有一张表叫做产品。基本上,我需要在这样的各个字段中使用相同的词进行搜索,这很好用。 问题是现在我想要一个不同的查询。我只想显示来自特定国家/地区的所有汽车,以及其他字段。因此,如果我运行此查询 我从多个国家/地区获得结果,我在做什么错呢? 提前致谢 问题答案: 您只需要对您的条件进行分组,

  • 在本文给出的示例中,提到如果使用默认BindTag,那么事件值在定义中将不可见(将有一个延迟)。 关于类绑定有一些解释<我是初学者,所以想了解详细的原因 请解释为什么它在第一种情况下不起作用,而在第二种情况下起作用(当bindtags的顺序被修改时)。

  • 问题内容: 我认为这应该很容易,但是却在逃避我。我在帐户和帐户组之间建立了多对多关系。一个帐户可以在零个或多个组中,因此我使用的是标准联接表。 我正在使用MS Access,FWIW。另外,这是针对低带宽的情况,因此代码优化不如简单性/可读性那么重要。 我使用php作为表示层,因此Access的基本结果很好。 至于如何处理多结果情况,我实际上有两件事正在尝试构建。第一列在一个列中列出了所有组,因此

  • 本文向大家介绍MySQL慢查询日志的基本使用教程,包括了MySQL慢查询日志的基本使用教程的使用技巧和注意事项,需要的朋友参考一下 慢查询日志相关参数 MySQL 慢查询的相关参数解释:slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。 slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。 log-slow-queries :旧版(5.6以下版本)

  • 本文向大家介绍MySQL中的基本查询语句学习笔记,包括了MySQL中的基本查询语句学习笔记的使用技巧和注意事项,需要的朋友参考一下 1.基本查询语句 select 属性列表 from 表名和视图列表 [where 条件表达式1] [group by 属性名1 [having 条件表达式2]] [order by 属性名2 [asc|desc]] 2.单表查询 1)使用*查询所有字段 2) 查询指定

  • 我试图理解与Spring数据JPA的使用。考虑以下是从表中拉出的位置。 公共接口用户存储库扩展了JpaRepository{ 一切都很好。现在,在同一个界面上,我可以添加如下方法,其中它是从中提取的,它将与实体类不匹配。 A这也很好用。现在我真正的问题是,如果实体类与无关,为什么我们需要实体类。我们只是想确保代码能够正确编译吗?这是否意味着我甚至可以将任何类放入