【发布时间】:2021-12-27 20:47:46
【问题描述】:
我正在使用 Python 3.9 和 Django 3.2。我有这个价格模型
class Price(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
price = models.FloatField(null=False)
created = models.DateTimeField(null=False, default=datetime.now)
如果我想获得过去 24 小时内每小时的价格,我可以运行这样的方法
def _get_prices_per_time_slice(self, last_hours=24):
now = timezone.now()
end_time = now.replace(second = 0, microsecond = 0)
start_time = end_time - timedelta(hours=last_hours)
qset = Price.objects.filter(
created__range=[start_time, end_time],
created__minute=end_time.minute
).values('price')
return [r['price'] for r in qset]
但假设我想每隔 X 小时获取一次价格。
def _get_prices_per_time_slice(self, last_hours=24, time_slice_in_hours=4):
因此,如果当前时间是午夜(零秒和分钟),我想获取午夜、晚上 8 点、下午 4 点、中午、上午 8 点和凌晨 4 点的价格。如何添加过滤器以筛选每 X 小时的价格?
【问题讨论】:
-
filter(created__in=list_of_desired_times)呢? -
为什么
created__minute=end_time.minute在里面? -
您是否正在寻找午夜、晚上 8 点、下午 4 点等每个时间的单一价格?或所有存储在给定窗口中的价格:` [[晚上 8 点到午夜之间的所有价格],[下午 4 点到晚上 8 点之间的所有价格] , ...]
标签: python-3.x django datetime django-queryset django-filter