如何通过包含json的字符串字段过滤queryset (Django + SQLite)



我有以下情况。Flight模型(flights)有一个名为"airlines_codes"(TextField)的字段,我将数据存储在JSON数组中,格式如下:

["TB", "IR", "EP", "XX"]

我需要按2个字母的航空公司代码(IATA格式)过滤航班,例如'XX',我像这样简单但成功地实现了这一点:

filtered_flights = Flight.objects.filter(airlines_codes__icontains='XX')

这是伟大的,但实际上不是。我有航班,其中airlines_codes看起来像这样:

["TBZ", "IR", "EP", "XXY"]

这里有3个字母的代码(ICAO格式),显然上面的查询过滤器不起作用。

p。我不能移动到PostgreSQL,我也不能改变无论如何数据库。这只能通过一些查询来实现。

谢谢你的建议。

在不以任何方式改变数据库的情况下,您需要将值过滤为字符串。你最好的选择是airlines_codes__contains。以下是我的建议,假设您的列表总是按照您所表示的方式进行清理。

Flight.objects.filter(airlines_codes__contains='"XX"')

从Django 3.1开始,JSONField在更广泛的数据库上得到支持。理想情况下,对于从头开始构建类似系统的其他人来说,该字段将是更可取的方法。

相关内容

  • 没有找到相关文章

最新更新