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

时间:2019-10-30 11:54:58

标签: python django

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

0 个答案:

没有答案