如何在包含日期的JSONField上执行Django查询?

时间:2018-10-17 20:46:27

标签: python json django postgresql

我希望我可以做这样的事情:

Q(data__result_started__gt = dateutil.parser.parse("5/22/18"))

Q(data__result_started__gt = "2018-5-22")

在第一种情况下,我得到一个datetime不是JSON可序列化错误,在第二种情况下,我得到了0个返回的结果。

有没有办法做到这一点? 谢谢

1 个答案:

答案 0 :(得分:0)

您不能使用__gt后缀来过滤json子字段。 django ORM尚不支持此功能。可以使用postgresql中的原始sql来执行此操作,因此可能会在将来的Django版本中添加此功能。

如果您提供模型代码,则有人可能会使用sql建议答案。

您还可以使用.annotate()提取子字段,然后在后续的django QuerySet查询中使用该子字段。有关示例,请参见此问题。

Ordering Django querysets using a JSONField's properties