我有两个模型。除了它具有id
且另一个具有JSONField
以及第一个模型的id
的序列表之外,这一点无关紧要。我想获取第一个模型对象的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
。
**这里已是解决方案** Django QuerySet filter field in JSONField list