Django - 连接两个模型

2023-12-30

对于以下模型,我想检索在历史表中具有指定间隔之间的过渡日期的条目的所有设备:

class History(models.Model):
    device = models.ForeignKey(DeviceModel, to_field='id')
    transition_date = models.DateTimeField()

    class Meta:
        db_table = 'History'

class DeviceModel(models.Model):
    id = models.IntegerField()
    name = models.CharField()

    class Meta:
        db_table = 'Devices'

我有这段代码可以过滤指定的时间间隔:

devices = DeviceModel.objects.filter(history__transition_date__range=(startDate, endDate))

这给了我尽可能多的行History表有transition_date在指定范围内。 过滤器函数在之间执行 INNER JOINDeviceModel and History on device id仅检索DeviceModel字段。我的问题是如何从两者检索数据History and DeviceModel同时将它们与设备 ID 上的 filter/select_lated 一起加入。 我不想编写自定义 SQL 查询。


在你的模型中Device and History模型与从 History 到 DeviceModel 的外键相关,这意味着当您有一个 History 对象时,您可以检索与其相关的设备模型,反之亦然(如果您有一个设备,您可以获取其历史记录)。

Example:

first_history = History.objects.all()[0]
first_history.device  # This return the device object related with first_history
first_history.device.name # This return the name of the device related with first_history

但它也可以以另一种方式工作,你可以这样做:

first_device = Device.objects.all()[0]
first_device.history  # This return the history object related with device
first_device.history.transition_date  # Exactly as before, can access history fields

所以在你的查询中:

devices = DeviceModel.objects.filter(history__transition_date__range=(startDate, endDate))

这将返回一个设备列表,但您可以访问与每个设备对象相关的历史记录

这对你来说还不够吗?您有一个设备列表,每个设备都可以访问其相关的历史记录对象

Info:当你声明一个外键字段模型默认通过 id 相关,我这样说是因为你正在做:

device = models.ForeignKey(DeviceModel, to_field='id')

如你所见,你正在使用to_field='id'但这种关系是默认完成的,如果你这样做:

device = models.ForeignKey(DeviceModel)

你会得到相同的结果


(EDIT)使用.values()获取列表[device.name,history.date]

得到一个像你说的清单[device.name, history.date]您可以使用.values()Django QuerySet的功能,官方文档here https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values

你可以尝试这样的事情:

devices = DeviceModel.objects.filter(history__transition_date__range=(startDate, endDate)).values('name','history__transition_date')  
# Notice that it is 'history _ _ transition_date with 2 underscores
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django - 连接两个模型 的相关文章

  • django 保护用户上传的文件

    如何允许用户将文件上传到他们自己的用户指定的文件夹 并且只能看到他们已上传的文件 我正在使用 django 文件传输 目前 它让我可以选择将媒体放入哪个文件 但我可以将其放入任何用户的文件中并查看每个用户的媒体 这是我的 uploads m
  • Django - 简单的搜索表单

    使用 Django 1 9 和 Python 3 5 我想制作一个简单的搜索表单 views py from django views import generic from django shortcuts import render f
  • 在 django vanilla CreateView 上设置当前用户

    我想用当前登录的用户更新我的模型 我正在使用 django vanilla views 为了存储新记录 我尝试使用 CreateView 我不想在表单上显示用户 只需自动更新即可 这是我的模型 class Measurement model
  • Python 中的单词匹配

    我有这个 但它正在进行部分匹配 for il in ignore list if il word in title or il word in text return True 我怎样才能只匹配整个单词 您需要将标题和文本字符串拆分为单词列
  • AWS beanstalk + Django:502 错误网关 - ModuleNotFoundError:没有名为“应用程序”的模块

    我正在尝试将 Django 项目部署到 Elastic Beanstalk 我正在遵循他们的指南 https docs aws amazon com elasticbeanstalk latest dg create deploy pyth
  • Django NoReverseMatch

    我有以下设置 landing pages views py urls py In urls py当我尝试访问时 我有以下内容 competition from django conf urls defaults import from dj
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • 我的本地 Eclipse 可以在 Docker 容器中安装 Access 库吗?

    我有一个用于 Django 开发的 Docker 映像 通过一些 xauthority 文件机制 我在容器内使用 Eclipse 在大多数情况下 Eclipse 运行良好 但存在一些棘手的问题 这些问题似乎与它在容器内运行的事实有关 毕竟
  • django-pipeline 和 s3boto 存储似乎不能一起工作

    我尝试将 django pipeline 1 1 27 与 s3boto 一起使用来压缩和过滤静态文件 然后将它们上传到 s3 存储桶 如果我只是使用 PIPELINE STORAGE pipeline storage PipelineFi
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • django 模板上的 vscode html 自动套用格式

    我喜欢 VSCode 的保存自动格式功能 直到它弄乱了我的模板代码 它错误地将我的 django 模板语法格式化为一行代码 有时非常长的一行 所以不用这段代码 for row in ABCDEFGH tr for col in 123456
  • Django - 在管理之外使用多对多水平界面

    我正在使用带有 m2m 字段的表单 我希望这个字段看起来像 django 管理站点的水平界面 我该怎么做 谢谢 您需要使用FilteredSelectMultiple widget from django contrib admin wid
  • 如何为 django admin 创建自定义页面?

    我想为没有模型的管理面板创建自定义页面 首先 我将 index html 复制到项目文件夹 mysite templates admin index html 然后添加到应用程序阻止我的代码 div class module table c
  • 在 python3.6 上 pip 安装 Django

    如果我跑pip install Django I get 已满足的要求 Django in usr local lib python2 7 dist packages 我想改用 python3 6 它已经安装在 usr bin python
  • django.db.utils.OperationalError:Shell 命令 forloop 中外键不匹配

    我正在研究以下两个 Django 模型 以用户作为外键的组织模型和以组织作为外键的类别列表 以下是Models Create your models here from django contrib auth models import U
  • Django - 是否可以迭代方法?

    我正在 Django 中开发一个 Web 应用程序 它可以处理产品 价格和统计数据等 EDIT 更直接的解释 如何 分组 或 标记 一些实例方法 以便我可以像这样迭代它们for method in instance name of the
  • 构建一个两阶段的 Django 管理表单来添加对象?

    是否可以构建一个两阶段表单来在 Django admin 中创建对象 当管理员用户访问时 admin my app article add 我想显示一些选项 然后 应用程序将显示创建页面 其中包含基于所做选择的预先计算的字段 你可以覆盖ad
  • 初始填充 Django Forms

    我决定学习 Django Forms 一段时间以来 我一直在使用 HTML 表单 因为我很难接受 Django Forms 如何将初始数据填充到 Django Forms 中 例子 考虑这些模型是否已填充 包含数据 模型 py class
  • Postgres 和 Django - DataError:无法识别时区

    我们从一些用户那里收到以下错误 DataError time zone Asia Qostanay not recognized 我们发现问题出在以下 SQL 查询上 SELECT FROM app foobar WHERE EXTRACT
  • 尝试在 Mac OSX 上的 virtualenv 和 MySQL 中安装 Django CMS 时出错

    当我尝试使用 virutalenv 安装带有 MySQL 的 django CMS 时 出现以下错误 RuntimeError maximum recursion depth exceeded Users ethan Sites env b

随机推荐

  • 使用 Gremlin 在二部图上随机游走

    我想根据给定的用户偏好 用户喜欢的项目 基于使用groovy中的gremlin在有向二分图上进行随机游走来对项目进行排名 该图具有以下基本结构 用户1 喜欢 gt 项目A 项目B 此后我提出的查询 def runRankQuery def
  • 如何在Python中获取处理器名称?

    在我的 Windows 笔记本电脑上使用 Python 中的平台模块 我得到以下输出 import platform platform processor Intel64 Family 6 Model 58 Stepping 9 Genui
  • NSTextField 的边距和填充? (迅速)

    我想知道是否可以设置边距或填充NSTextField 我实现了或多或少自定义的文本字段 此屏幕截图中的第一个 使用此代码 myTextField wantsLayer true myTextField layer cornerRadius
  • Django 的 Db2 驱动程序?

    在我看来 Django 目前只提供了 4 个后端数据库引擎 它们是 django db backends postgresql django db backends mysql django db backends sqlite3 djan
  • 更改字典中键的名称

    如何更改 Python 字典中条目的键 只需 2 步即可轻松完成 dictionary new key dictionary old key del dictionary old key 或者一步 dictionary new key di
  • 我可以始终使用 WorkManager 而不是协程吗?

    我想知道既然有像 WorkManager 这样出色的解决方案 我为什么还要为 rx 或协程烦恼呢 但几乎所有教程都使用协程 那么 WorkManager 可能有缺点吗 两者的范围不同 WorkManager 可以推迟 任何以后的时间 或立即
  • Box2dweb - 碰撞接触点

    我使用box2dweb 我正在尝试开发一款游戏 在某些时候 我需要找出 圆 和 盒子 之间的接触点 我所知道的是可以使用 b2ContactListener 来完成 我们可以通过使用 Post Solve Event 实现 b2Contac
  • 如何反转 dplyr::select 的辅助函数?

    如何反转辅助函数dplyr select like matches or contains 以便我可以选择不包含或不匹配特定字符串的变量 例如 假设我想选择 mtcars 数据框中没有字母 m 的所有列 我可以想象做类似的事情 mtcars
  • Java 8 DateTimeFormatter 解析可选部分

    我需要将日期时间解析为两种不同格式的字符串 19861221235959Z 1986 12 21T23 59 59Z 以下 dateTimeFormatter 模式正确解析第一种日期字符串 DateTimeFormatter ofPatte
  • MySQL 5.5:对于 innodb 中的 text/varchar 字段,以下哪一项是更好的存储方式?

    要求 Page 1 gt 显示用户及其最新 10 篇博客文章的 1 2 行预览 Page 2 gt 显示带有全文的单个博客文章 方法一 MySQL table gt userid gt varchar 50 post id gt integ
  • 基于云的 MS Access 后端选项

    我们公司使用 Access 来满足其数据库需求 它希望坚持使用当前的数据库前端 但将表迁移到某些基于云的解决方案 我们不想托管 SharePoint 或支付 Office 365 的月费 我使用 MySql 作为后端 但我们必须安装驱动程序
  • Django 中的 ModelForm 和 OneToOneField

    我在 Django 中有两个模型与OneToOneField PrinterProfile and PrinterAdress 我正在尝试制作一个表格PrinterProfileForm 但由于某种原因它没有通过PrinterAddress
  • 如何在TFS构建任务中获取代理用户能力?

    我已经宣布了userTFS 2015 构建代理中名为 MyCapability 的功能 以路径作为值 如何在构建任务的 powershell 脚本中获取此值 env MyCapability and MyCapability不工作 遗憾的是
  • Ajax 和后退按钮。哈希值发生变化,但是之前的页面状态存储在哪里?

    我试图让 ajax 与后退按钮一起工作 但缺少一些核心内容 之前的页面状态存储在哪里 CASE 1 点击 让我变红 ajax事件发生并且页面变成红色 哈希 red 点击 让我变黄 ajax事件发生并且页面变成黄色 哈希 yellow 单击后
  • 在未安装 VB6 的情况下运行 VB6 应用程序

    我的问题是 如果我想运行 VB6 应用程序 我必须在客户端计算机上安装 VB6 其实我的VB6版本 无法制作安装文件 所以我只是手动链接到exe文件 有什么方法可以让我不必安装VB6 只需复制一些文件即可运行该应用程序 Thanks 为了运
  • 模块'对象没有属性'drawMatches' opencv python

    我只是在 OpenCV 中做一个特征检测的例子 该示例如下所示 它给了我以下错误 module 对象没有属性 drawMatches 我已经检查了 OpenCV 文档 但不确定为什么会收到此错误 有谁知道为什么 import numpy a
  • 如何在nodejs的ejs文件中显示警报

    例如 我想访问文档对象并想使用警报 所以我在 ejs 文件中创建了一个函数 我想在出现错误时显示警报 所以我正在渲染我的 ejs 文件并给出 2 个参数 一个是结果 另一个是错误 并希望显示是否有错误 显示警报 res render app
  • 如何避免在 PHP 7 中的每个文件上重新声明刻度

    Overview 在 PHP 5 6 中似乎添加declare ticks 1 然后使用register tick function 将遵循任何包含并相应地提供分析信息 在 PHP 7 中 但现在看来我必须添加declare ticks 1
  • PHP短路惰性求值,php.net手册在哪里?

    抱歉 如果这听起来像是一个非常愚蠢的问题 但我用 Google 搜索了网络 还专门用 Google 搜索了 php net 网站和 stackoverflow com 网站 我知道 PHP 会短路惰性求值使用时and or 运算符 但是 P
  • Django - 连接两个模型

    对于以下模型 我想检索在历史表中具有指定间隔之间的过渡日期的条目的所有设备 class History models Model device models ForeignKey DeviceModel to field id transi