【发布时间】:2021-08-23 07:40:31
【问题描述】:
我在 Django 中有一个模型,其中有一个名为 periodicity 的 JsonField,它像这样在 Json 数组中序列化:
{
"id_series": 12381,
"country_name": "Central African Republic",
"periodicity": [
{
"period": "monthly",
"start_date": "2010-10-01",
"end_date": "2018-10-01"
},
{
"period": "weekly",
"start_date": "2011-10-01",
"end_date": "2018-01-01"
}
]
},
{
...
}
所以我的目标是过滤并找到在特定日期内未更新的系列。为此,我需要查询内部 Json 数组的 end_date。进行过滤的最佳方法是什么?
我尝试通过这样做将end_date 转换为日期对象:
from django.db.models.expressions import RawSQL
Serie.objects.annotate(endDate=RawSQL("((periodicity->>'end_date')::date)", [])).filter(endDate__gte=comparisonDate)
但到目前为止还没有产生任何结果。我正在研究类似https://stackoverflow.com/a/65184218/2219080.
【问题讨论】:
标签: json django postgresql