- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个模型,run、sensor_parameter 和 data。它们之间还有其他外键关系,但run 没有直接指向sensor_parameter 或data 的外键。
run 具有start_time 和end_time,并且与chamber 相关。
class Run(models.Model):
start_time = models.DateTimeField(db_index=True)
end_time = models.DateTimeField(db_index=True)
chamber = models.ForeignKey(Chamber, on_delete=models.CASCADE)
chamber 与sensor 有关系,sensor 有一组sensor_parameter(s)
class SensorParameter(models.Model):
sensor = models.ForeignKey(Sensor)
parameter = models.ForeignKey(Parameter)
data 点最终“属于”sensor_parameter:
class Data(models.Model):
time = models.DateTimeField(db_index=True)
sensor_parameter = models.ForeignKey(SensorParameter, on_delete=models.CASCADE)
parameter_value = models.FloatField()
我需要过滤属于run 的sensor_parameter(s) 列表,但它们之间的唯一联系是时间值。由于 data 有时间戳,而 run 有 start_time 和 end_time,我想我可以过滤一个列表data.sensor_parameter 在一个时间段范围内。
我不确定如何构建该查询集过滤器。
我已经导入了日期时间,并且可以访问 django_filter。
这是我目前在 views.py 中的内容
import datetime
import django_filters
def get(self, request):
# Get a list of run objects, that are passed through the request
run_ids = request.GET.getlist('id')
runs = Run.objects.filter(pk__in=run_ids)
# Get a list of all chambers that own those runs
chamber = Chamber.objects.filter(run__in=runs).distinct()
# Get a list of all sensors that belong to those chambers
sensor = Sensor.objects.filter(chamber=chamber)
# Looking around, I saw these two DateTimeFilter expressions from django_filters
time__gte = django_filters.DateTimeFilter(name="time", lookup_expr='gte')
time__lte = django_filters.DateTimeFilter(name="time", lookup_expr='lte')
# Here I would have to determine which run.start_time is lower
# And which run.end_time is higher, to get a valid time range
# This part is not finished yet
time_start = run.start_time
time_end = run.end_time
# This is the filter I'm having trouble implementing
sensor_parameters = SensorParameter.objects.filter(sensor=sensor, data__time__gte=time_start, data__time__lte=time_end)
return render(request, self.template_name, {'run': run, 'sensor_parameters': sensor_parameters})
基本上,我想如果我从我的运行中提取一个开始时间和一个结束时间(它可以不止一次运行,我必须确定哪个 start_time 较低,end_time 较大),然后我可以使用时间范围根据 data.time 过滤我的 sensor_parameter。
我不知道如何从这里开始。
此外,如果有任何不同,我们会使用 PostgreSQL。
如果您看到任何明显的错误或语法错误,请随时纠正和批评,我仍然是 Django 和 Python 的新手,但喜欢它的每一分钟。
最佳答案
我自己设法做到了,但我不确定我这样做的方式是否是最好的方式。我将保持上面的代码不变,以演示问题出在哪里,并提供与我实现的解决方案的比较点。
日期范围的想法是正确的,因为 data.time 是我到 run.start_time - run.end_time 的唯一链接。
所以我通过将所有 run.start_time 和 run.end_time 添加到几个列表来确定 range_period,然后我调用 <这些列表上的 strong>min() 和 max() 方法提取所需的时间段,然后将其放入列表中,这就是(包含的)__range 过滤器需要作为输入。
为了清楚起见,下面是带有注释的 views.py:
class ChartRunsView(generic.DetailView):
model = Run
template_name = 'chart_runs.html'
def get(self, request):
# Get a list of run objects, that are passed through the request
run_ids = request.GET.getlist('id')
runs = Run.objects.filter(pk__in=run_ids)
# Get a list of all chambers that own those runs
chamber = Chamber.objects.filter(run__in=runs).distinct()
# Get a list of all sensors that belong to those chambers
sensor = Sensor.objects.filter(chamber=chamber)
# Initialize run_start and run_end lists
run_start_list = []
run_end_list = []
# Append start_time(s) and end_time(s) for all runs
for run in runs:
run_start_list.append(run.start_time)
run_end_list.append(run.end_time)
# Determine the earliest and latest time stamps for all the extracted run times
# Using Python's min() and max() list methods
runs_start = min(run_start_list)
runs_end = max(run_end_list)
# Build a new list with the earliest run_start and latest run_end
range_period = [runs_start, runs_end]
# Build query that will filter all SensorParameter objects against sensor, and data
# Using the __range filter method, which takes a list as input.
# This will return all SensorParameter objects in that time range, which could potentially
# be thousands. Applying the .distinct() filter method on the resulting queryset gives us
# only unique results
sensor_parameters = SensorParameter.objects.filter(sensor__in=sensor, data__time__range=range_period).distinct()
return render(request, self.template_name, {'runs': runs,
'sensor_parameters': sensor_parameters})
关于python - Django:查询集对象过滤器,针对另一个对象的时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575105/
您好,我是使用 xampp 的 PHPmyadmin 新手,没有 MYSQL 背景。当我喜欢研究它是如何工作的时,我的脑海中浮现出一个想法,它让我一周都无法休眠,因为我似乎无法弄清楚如何使用 MIN(
Go docs say (强调): Programs using times should typically store and pass them as values, not pointers.
我有一组用户在 8 月 1 日有一个条目。我想找到在 8 月 1 日有条目但在 8 月 2 日没有做任何事情的用户。 现在是 10 月,所以事件已经过去很久了。 我有限的知识说: SELECT * F
我有以下代码,主要编码和取消编码时间结构。这是代码 package main import ( "fmt" "time" "encoding/json" ) type chec
您能详细解释一下“用户 CPU 时间”和“系统 CPU 时间”吗?我读了很多,但我不太理解。 最佳答案 区别在于时间花在用户空间还是内核空间。用户 CPU 时间是处理器运行程序代码(或库中的代码)所花
应用程序不计算东西,但做输入/输出、读取文件、使用网络。我希望探查器显示它。 我希望像 callgrind 中的东西一样,在每个问题中调用 clock_gettime。 或者像 oprofile 那样
目前我的 web 应用程序接收 websocket 数据来触发操作。 这会在页面重新加载时中断,因此我需要一个能够触发特定事件的客户端解决方案。 这个想法可行吗? 假设你有 TimeX = curre
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我有一个 Instant (org.joda.time.Instant) 的实例,我在一些 api 响应中得到它。我有另一个来自 (java.time.Instant) 的实例,这是我从其他调用中获得
如何集成功能 f(y) w.r.t 时间;即 'y'是一个包含 3000 个值和值 time(t) 的数组从 1 到 3000 不等。所以,在整合 f(y) 后我需要 3000 个值. 积分将是不确定
可以通过 CLI 创建命名空间,但是如何使用 Java SDK 来创建命名空间? 最佳答案 它以编程方式通过 gRPC API 完成由服务公开。 在 Java 中,生成的 gRPC 客户端可以通过 W
我有一个函数,它接受 2 组日期(开始日期和结束日期),这些日期将用于我的匹配引擎 我必须知道start_date1和end_date1是否在start_date2和end_date2内 快进:当我在
我想从 Python 脚本运行“time”unix 命令,以计算非 Python 应用程序的执行时间。我会使用 os.system 方法。有什么方法可以在Python中保存这个输出吗?我的目标是多次运
我正在寻找一种“漂亮的数字”算法来确定日期/时间值轴上的标签。我熟悉 Paul Heckbert's Nice Numbers algorithm . 我有一个在 X 轴上显示时间/日期的图,用户可以
在 PowerShell 中,您可以格式化日期以返回当前小时,如下所示: Get-Date -UFormat %H 您可以像这样在 UTC 中获取日期字符串: $dateNow = Get-Date
我正在尝试使用 Javascript 向父子窗口添加一些页面加载检查功能。 我的目标是“从父窗口”检测,每次子窗口完全加载然后执行一些代码。 我在父窗口中使用以下代码示例: childPage=wi
我正在尝试设置此 FFmpeg 命令的 drawtext 何时开始,我尝试使用 start_number 但看起来它不会成功。 ffmpeg -i 1.mp4 -acodec aac -keyint_
我收到了一个 Excel (2010) 电子表格,它基本上是一个文本转储。 单元格 - J8 具有以下信息 2014 年 2 月 4 日星期二 00:08:06 EST 单元格 - L8 具有以下信息
我收到的原始数据包含一列具有以下日期和时间戳格式的数据: 2014 年 3 月 31 日凌晨 3:38 单元格的格式并不一致,因为有些单元格有单个空格,而另一些单元格中有两个或三个字符之间的空格。所以
我想知道是否有办法在我的 Grails 应用程序顶部显示版本和构建日期。 编辑:我应该说我正在寻找构建应用程序的日期/时间。 最佳答案 在您的主模板中,或任何地方。 Server version:
我是一名优秀的程序员,十分优秀!