我有两个模型。 Variant
,除了它具有id
且SecondModel
具有JSONField
且带有第一个模型的id
的序列表的事实之外,这无关紧要。
我想获取Variant
模型对象的QuerySet,其ID在第二个模型对象的JSONField
的列表中。
我设法做到的是:
class SecondModel(Model):
variant_ids = JSONField()
@property
def variant_id_list(self):
return json.loads(self.variant_ids or "[]")
@property
def variants(self):
return Variant.objects.filter(id__in=self.variant_id_list)
但是上述方法迫使Django和Postgres从数据库获取variant_ids
,然后将其转换为python列表,然后再次请求DB检查ID是否在列表中,而(我认为)DB可以处理整个操作本身。
有没有办法做到这一点?
我无法将JSONField
更改为ArrayField
或其他任何名称,它必须是JSONField
。