JSONField列表中的Django QuerySet过滤器字段

问题描述 投票:0回答:1

我有两个模型。除了它具有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

python django
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.