我需要注解保存在同一模型中的JSON字段中的值。(不是最聪明的,但它就是这样)。
我将值注解为:
class SomeModel(BaseModel):
reference_numbers = JSONField(blank=True, null=True)
SomeModel.objects.annotate(
reference=Cast(
F("reference_numbers__some_id"),
output_field=models.CharField(),
)
)
我需要在查询中将其转换为text/char,因为后续的搜索将只对text/char(三元组相似性)起作用。
它可以工作,但结果会给我的字符串添加一个额外的引号。像这样:
查询集[0].reference -〉'“666999”'
如何从查询中获得正确的字符串?
我还尝试过只使用ExpressionWrapper和output字段,但由于它没有强制转换SQL中的类型,因此在尝试执行搜索时代码会中断,因为它仍然使用jsonb字段。
1条答案
按热度按时间e4eetjau1#
我也遇到了同样的问题,经过一些研究,我发现正确的方法似乎是
KeyTextTransform
。以下可能对你有用:如果您的访问模式变得更加复杂,您可能需要嵌套它们,请参阅here。
Django 4.2中还有一个名为KT的查询表达式,它允许更深层次的访问模式。