如何在 django 中进行内连接?

2024-01-26

我想在 Html 中显示出版物的城市、州和国家的名称。但它们位于不同的表中。

这是我的模型.py

class country(models.Model):
    country_name = models.CharField(max_length=200, null=True)
    country_subdomain = models.CharField(max_length=3, null=True)
    def __str__(self):
        return self.country_name

class countrystate(models.Model):
    state_name = models.CharField(max_length=200, null=True)
    country = models.ForeignKey(country, on_delete=models.CASCADE, null=True)
    importance = models.IntegerField(null=True)
    def __str__(self):
        return self.state_name

class city(models.Model):
    city_name = models.CharField(max_length=200, null=True)
    countrystate = models.ForeignKey(countrystate, on_delete=models.CASCADE, null=True)
    def __str__(self):
        return self.city_name

class publication(models.Model):
    user = ForeignKey(users, on_delete=models.CASCADE, null=False)
    title= models.CharField(max_length=300, null=True)
    country=models.ForeignKey(country, on_delete=models.CASCADE, null=True)
    countrystate=models.ForeignKey(countrystate, on_delete=models.CASCADE, null=True)
    city=models.ForeignKey(city, on_delete=models.CASCADE, null=True)

    def __str__(self):
        return self.title

这是我的观点.py

def publications(request):
    mypublications = publication.objects.filter(user_id=request.session['account_id'])
    dic.update({"plist": mypublications })
    return render(request, 'blog/mypublications.html', dic)

在 django 视图中,下一个 sql 查询相当于什么?

SELECT p.user_id, p.title, c.cuntry_id, c.country_name, s.state_id, s.state_name, y.city_id, y.city_name FROM publication AS p
INNER JOIN country AS c ON c.id = p.country_id
INNER JOIN countrystate AS s ON s.id = p.countrystate_id
INNER JOIN city AS y ON y.id = p.city_id

您可能正在寻找select_related https://docs.djangoproject.com/en/2.2/ref/models/querysets/#select-related,这是实现这一目标的自然方法:

pubs = publication.objects.select_related('country', 'country_state', 'city')

您可以通过以下方式检查生成的 SQLstr(pubs.query),这应该会产生如下所示的输出(示例来自 postgres 后端):

SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ...  
FROM "publication" 
INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) 
INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) 
INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" ) 

然后,返回的游标值将转换为适当的 ORM 模型实例,以便当您循环这些发布时,可以通过相关表自己的对象访问相关表的值。然而,沿着预先选择的前向关系的这些访问不会导致额外的数据库命中:

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 django 中进行内连接? 的相关文章

  • 更新查询增量字段加上 1 codeigniter 函数 [重复]

    这个问题在这里已经有答案了 我想在 codeigniter 项目中将字段值增加到当前值加 1 所以 我做了一个功能 但它不起作用 我的职能是 function increse field by 1 table name fieldToInc
  • 如何使用格式保存 Tkinter 文本小部件的内容

    我在 python 中使用 Tkinter 在文本窗口中显示输出 我发现使用 get 功能我可以从此窗口检索文本内容 但我有用不同背景颜色标记的文本部分 是否可以将内容与这些颜色一起复制到文件 例如 html 或 doc 中 没有对你想要的
  • 在 Python 中倾斜数组

    我有一个 2D 数组 我将使用它保存为灰度图像scipy misc toimage 在此之前 我想将图像倾斜给定角度 像这样进行插值scipy ndimage interpolation rotate 上图只是为了说明倾斜过程 我知道我必须
  • Python 中 eval("input()") 和 eval(input()) 之间的区别

    我正在尝试以下功能 x eval input 输入为 123 x 的类型也是int 它工作正常 In 22 x eval input enter enter 123 In 24 print type x
  • MySQL ALTER TABLE 挂起

    我知道这个问题已经被问过好几次了 但我的问题发生在我刚刚创建的表上 它只有 10 列和 1 行 因此 与通常的挂起问题不同 这不是具有大量数据的大表的情况 但它仍然挂着 这是我正在运行的 SQL ALTER TABLE db Search
  • LogRecord 没有预期的字段

    在使用 logging 模块的Python中 文档承诺LogRecord实例将具有许多属性 这些属性在文档中明确列出 然而 情况似乎并不总是如此 当我不使用日志记录模块的 basicConfig 方法时 下面的程序显示属性 asctime
  • 如何检查discord.py中的所有者

    我试图让这个命令只有所有者才能运行它 是否有办法检查服务器的最高角色或创建者 我尝试了 commands is owner 但这仅检查某人是否是机器人的所有者 Guild owner https discordpy readthedocs
  • 无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件

    我目前正在尝试将 GPS 坐标绘制为地图上的标记 并在 wxPython 中显示结果 我使用 folium 绘制坐标标记并生成 HTML 文件 import folium fmap folium Map 43 5321 172 6362 z
  • 向 yahoo 和 hotmail 用户发送电子邮件?

    我正在使用 php 和 mysql 每次用户在我的网站上注册时 我都会使用 php mail 发送一封电子邮件进行身份验证 最近我发现 很多Yahoo和Hotmail用户还没有激活他们的帐户 假设 1000 个用户中 只有 200 个被激活
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • Mysql:计算访问频率

    我有这张桌子 CREATE OR REPLACE TABLE hits ip bigint page VARCHAR 256 agent VARCHAR 1000 date datetime 我想计算每个页面的 googlebot 访问频率
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary
  • 如何将 Django 数据库中的模板标签解释/渲染为 HTML

    我正在尝试添加带有来自 Django 管理站点的图像的帖子 但安全 自动转义关闭过滤器无法解释 Django 的模板标签 My input and page look like 复制图像地址 给出http 127 0 0 1 8000 7B
  • Hoare Partitioning算法讲解

    根据许多网站给出的伪代码 我写了这个Hoare分区算法 它采用一个数组 根据给定的主元来分区子数组的开始和结束索引 它工作得很好 但是有人可以解释一下逻辑 它是如何做到这一点的吗 这是代码 def hoare arr start end p
  • TCPDF - 来自 mysql 的打印表显示重复的第一行

    我是 TCPDF 的新手 我面临的小问题是所有输出数据都显示同一行 我的意思是第一条记录重复数据库中存在的总数据 行 的次数 这是我的代码 tbl header
  • 如何通过解析导入来组合并获取单个 Python 文件

    我正在尝试获取单个 Python 文件作为输出 我有一个 Python 脚本 其中有多个此类导入 from that import sub 导入来自所有本地模块 而不是来自系统或 Python 库 有什么方法可以解决这些问题并获得一个完整的
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat
  • 我可以以某种方式“编译”一个Python脚本以在没有安装Python的PC上运行吗?

    所以我有一个Python脚本 myscript py 我是这样执行的 python D myscript py 但是 我必须安装 Python 并将其包含在PATH使其工作的环境变量 是否有可能以某种方式将 Python 可执行文件与 Py

随机推荐

  • Apache Poi excel 删除空白行

    我有一个 3000 行的 Excel 文件 我删除了2000 使用ms excel应用程序 但是当我从代码中调用sheet getLastRowNum 时 它给了我3000 而不是1000 我如何删除空白行 我尝试了来自的代码here ht
  • IIS 7 Cors Ajax Soap 请求

    我遇到了一个无法解决的问题 我有一些 js jquery POST Soap 通过 PHP 请求代码在 Apache 上工作 启用了 Cors 来调用 HTTPS 并且工作正常 我已经迁移到 IIS7 设置响应标头 Access Contr
  • 在 PowerShell 中使用另一个扩展 JSON

    是否有一些简单的方法可以将一个 JSON 文件扩展为另一个文件 并使用 PowerShell 将输出保存到另一个文件 目前我正在尝试编写一个允许我做到这一点的循环函数 但也许有一个更简单的解决方案 迭代转换为 JSON 的属性PSCusto
  • 角度 Ui 树递增是重复的

    我的笨蛋 https plnkr co edit dlG6bJcBP8jaxhVEZ4wq p preview 在 My plunker 中 如果我添加一些子记录 那么如果我删除其中一个子记录 那么如果我添加行 则行会重复 scope ne
  • 将数据从 Android 发送到 PHP 服务器

    我在 android 中有一个应用程序 我想通过 url like mydata php lat 76867 long 87979 我有 php 代码 如果点击此 url 则将数据保存在数据库中 我所不知道的是如何通过我的android手机
  • 在 ASP.NET 中使用线程是否存在任何不明显的危险?

    这是一个兄弟姐妹的问题这个程序员的问题 https softwareengineering stackexchange com questions 13711 servicing background tasks on a large si
  • 设置elasticsearch php客户端的connect_timeout

    我想在我的elasticsearch php 客户端到我的elasticsearch 服务器之间配置一个小的超时 我尝试将一些参数传递给 guzzle 客户端 但似乎这不起作用 这是代码 params array params hosts
  • 如何在appdelegate中关闭viewcontroller?

    我为这样的暂停视图创建launchScreen func applicationWillResignActive application UIApplication let storyboard UIStoryboard name Main
  • Thymeleaf 复选框未传递值

    两个问题 我有用户和注释课程 用户可以有很多笔记 如何通过 Thymeleaf 显示属于用户的每个笔记 id th text u notes id 不起作用 我有一个表格 见图 其中每个用户都有布尔 isUserChecked 值的复选框
  • 以编程方式将视图添加到 LinearLayout 但它们不显示

    我正在尝试填充一个LinearLayout inside simple pdf example xml与 10printed order element2 xml这样我就可以生成一个 PDFListView 这实际上是一个LinearLay
  • 如何使用 JavaScript 从完整路径获取文件名?

    有没有办法可以从完整路径获取最后一个值 基于 符号 Example C Documents and Settings img recycled log jpg 有了这个案例 我只想得到recycled log jpg来自 JavaScrip
  • Zabbix 服务器未运行:显示的信息可能不是最新的

    所以突然之间 在使用它一周后 我在我的电脑上收到一条错误消息zabbix server gui http localhost zabbix http localhost zabbix 错误说 Zabbix server is not run
  • 尝试让 tag-it 与 AJAX 调用一起使用

    试图得到tag it http aehlke github com tag it 处理 ajax 调用 到目前为止一切正常 除此之外 我无法通过 ajax 调用分配 tagSource 在 firebug 中 数据 正在返回 Ruby Ru
  • 如何使用flutter为ios创建下拉菜单?

    我可以使用 DropdownButton 和 DropdownMenuItem 小部件为 android 创建下拉菜单 但对于 ios 我看不到任何像下拉菜单这样的小部件 我也在 Cupertino iOS 风格 小部件上看到过 但我没有任
  • Android ListView滚动到底部

    我正在开发带有聊天功能的应用程序 我想要我的ListView当用户发布新消息以及当用户位于列表底部并且收到新消息时滚动到底部 我正在用这个ListView
  • 如何设置键盘快捷键以跳转到行首/行尾? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 I can see that Ctrl left right jumps to the beginning end of line How
  • 在 Swift 中,如何交错 NSMutableParagraphStyle() 和 NSMutableAttributedString 来格式化要在 UITextView 中显示的字符串?

    回应我之前发布的一个例子 Andreas Oetjen 展示了一种巧妙的方法来显示分数和小数表textView使用属性字符串 https stackoverflow com a 42153358 2348597对齐数字 使小数点或正斜杠字符
  • Joshua Bloch 引入的 Builder 模式的一些修改

    我使用 Joshua Bloch 引入的 Java 构建器模式 有时 我发现与原始类型相比 使用默认值初始化某些字段的成本更高 因此 我的策略就是这样 我延迟了这些字段的默认值初始化操作 在构建过程中 如果调用者之前未设置它们 我只会将它们
  • 正则表达式精确匹配字符串?

    在这个问题的前言中 我要提到 虽然我远非正则表达式专家 但它们对我来说并不完全陌生 构建正则表达式来搜索特定字符串内的模式通常对我来说不是问题 但我有一个 也许 独特的情况 我有一组价值观 比如 028938DEF567987390987
  • 如何在 django 中进行内连接?

    我想在 Html 中显示出版物的城市 州和国家的名称 但它们位于不同的表中 这是我的模型 py class country models Model country name models CharField max length 200