- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一个 django 模型...
models.py
class UserRelationship:
user_id - IntegerField
staff_id - IntegerField
valid_from - DateTimeField
...以及一些从外部 API 检索数据的逻辑。
api.py
class Approval:
user_id - Int
created_at - DateTime
带有“批准”列表:
approvals = [{'user_id': <user_id>, 'created_at': <created_at>}, ...]
我需要找到一种有效的方法来在批准“批准”对象列表时派生“staff_id”。
我想不出使用 Django ORM 执行此操作的方法。
我知道我们可以使用 Q 对象进行复杂的查找:
from django.db.models import Q
qs = UserRelationship.obejcts.filter(Q(user_id=<user_id>) & Q(created_at__lte=<created_at>))
但这仅适用于 user_id/created_at
的单个组合,我如何才能为“批准”的大列表(~20k+)执行此操作。
任何帮助或提示将不胜感激。非常感谢。
最佳答案
Given a list of "approvals" (derived from an external source) e.g
approvals = [{'user_id': <user_id>, 'created_at': <created_at>}, ...]
I need find an efficient way to find "staff_id" at the time of approval for a list of ~20k+ "approval" objects.
i.e for each dict find a matching row where
approval.user_id = user_relationship.user_id and approval.created_at <= user_relationship.valid_from
根据您的外部数据源、索引等,效率会很重要。但是对于您关于如何制定查询的直接问题,best place to start is with django.db.models.Q :
If you need to execute more complex queries (for example, queries with
OR
statements), you can useQ
objects.A
Q
object (django.db.models.Q
) is an object used to encapsulate a collection of keyword arguments. These keyword arguments are specified as in “Field lookups” above.
filters = Q()
for x in approvals:
filters |= Q(user_id=x['user_id'], valid_from__lte=x['created_at'])
relationships = UserRelationship.objects.filter(filers)
并且您可以通过遍历 relationships
查询集来获取 staff_id
。此示例假定您在批准列表中具有唯一的 user_id
,以便您可以返回并将正确的批准与正确的 staff_id 相关联。如果批准列表中可以有多个相同的 user_id
,则只需按照 user_id 在每个分区中出现一次以上的方式对批准进行分区。
partitions = []
check_ids = []
for x in approvals:
current_partition = None
current_check_id = None
for partition, check_id in zip(partitions, check_ids):
if x['user_id'] not in check_id:
current_partition = partition
current_check_id = check_id
if current_partition is None:
partitions.append(list())
check_ids.append(set())
current_partition = partitions[-1]
current_check_id = check_ids[-1]
current_check_id.add(x['user_id']
current_partition.append(x)
关于sql - 从外部源查询数据的 django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946986/
我需要为打开的 xlsx 文件取消隐藏工作表 TAB,为此,我使用 VBS 文件打开 xlsm 文件并激活宏(位于模块中)。 当我手动运行宏时,它可以工作。 当它通过vbs激活时,它只能看到包含宏的x
我正在使用 Google Cloud Compute Engine 安装气流并使其保持正常运行。安装很好,现在它在主机上运行:0.0.0.0:8080 我有此 VM 实例的外部 IP 地址,但是我无法
我们可以在 GWT 中使用这个 $entry 方法来允许外部 javascript 执行 java 方法。 你可以在他们的文档 https://developers.google.com/web-to
在 Cython 的“Hello World”和 C 数学库中调用函数的示例之后 here ,我真正想做的是将我自己的 C 代码放在一个单独的文件中,并在 Cython 中使用它。关注 this ,我
我一直在试验 JSON Pointers引用和重用 JSON schemas . 按照示例,我能够引用在另一个 JSON 模式中声明的特定属性,一切都按预期进行,但是我还没有找到一种方法来扩展基本 J
我正在使用 X.jar 并添加到我的 AspectJ 项目(在 eclipse 中)。我已经为 X.jar 中的 myMethod() 方法编写了切入点和建议。 但是aspectj 并没有拦截这个方法
我正在 Controller 中创建一个自定义指令,并在 ng-repeat 中调用它,如下所示: HTML: JS: 在测试指令中,我按如下方式调用 loadDat
我正在尝试加载服务器上本地存在的 HTML 页面,位于名为 HTML-FIles 的文件夹中。 我想使用 jquery 加载一个文件并将其内容显示在 div 中。 现在,我可以加载文件,但在 div
我正在尝试根据初始选择从 JSON 文件生成选择菜单。我见过很多不同的方式,人们为此编写了一个函数,但想要一些非常简单的东西。 HTML: Please select Practis
我的目标是从 HTML 文档中获取文本,该文档不会调用 .jsp 文件中的任何函数。 我环顾四周,我以为我已经找到了问题的答案,但它似乎不起作用,其他答案包括使用 jQuery(我既不熟悉也不允许使用
我正在尝试从外部 JSON 文件获取文件内容,但我一直在警报中收到 null。 JS: function getText() { var result = null; var file
我正在加载一个外部 javascript 文件,该文件仅填充有 int 或字符串或 bool 值或数组的变量。类似... varBool=false; var1="var1"; var2="var2:
我的数据存储在外部 Javascript 文件中。 看起来像这样, window.videos = [{ "name": "Sample data", "duration": 154,
我有一个包含 Google ADWords 的 HTML 页面,以及来自外部 URL 的 ajax 调用,我想获取 json 来自 url 的数据。外部API也是我做的。API Controller
我试图看看是否有一种简单的方法可以通过外部 JavaScript 函数访问 Controller 的内部范围(与目标 Controller 完全无关) 我在这里看到了其他几个问题 angular.el
我尝试在运行外部命令时终止脚本,结果出现错误。考虑这个简单的代码: try { where.exe Test-App } catch { Write-Error "Exception
我在 test.js 中定义了一个外部 JS 函数 function InvokeSupport(ID, TimeStamp, Hash) { var sUrl = '' + "?uid="
如果我想将变量从外部 js 文件提取到另一个外部 js 文件。我该怎么做? 例如,如果我有一个名为 example1.js 的文件,其中包含以下代码 var test = 1; 如何获取变量 tes
我正在尝试使用 java 从外部 jar 中读取文件..例如,我有两个 jar 文件。一个是“foo.jar”,另一个是“bar.jar”。 “bar.jar”内部是文件“foo-bar.txt”。如
在我的 Java 应用程序中,我希望从未实际加载的类文件以及也未加载的 jar 文件中读取字节码内容。理想情况下,我需要能够获取任何给定的 jarfile,并找到其中的所有类。因此,考虑以下情况: 我
我是一名优秀的程序员,十分优秀!