在CommaSeparatedIntegerField中对索引值进行过滤

1 投票
1 回答
533 浏览
提问于 2025-04-17 04:41

我有一个模型类,这个类里有一个用逗号分隔的整数字段,它对应的是Postgres数据库中的一个整数数组字段。

class Observation(models.Model):
    frequencies = models.CommaSeparatedIntegerField(max_length=200)

我想要做的是,使用过滤器(或者其他合适的方式)来对数组中的某个索引值进行比较。举个例子:

Observation.objects.filter(frequencies[100]__equals = 10)

我知道我不能这样做,而且在文档里也找不到如何在过滤器接口中对数组字段进行索引的方法。我希望这个操作能在数据库里的SQL中完成(可能需要在代码里实现?)。

我知道可以使用extra()这个功能,但我想知道有没有更好的方法?

谢谢。

1 个回答

2

如果你发现自己需要在一个用逗号分隔的字段中查找特定的内容,那你可能要考虑一下,这样的数据格式是否合适。也许用一个外键去连接另一个表会更好。

撰写回答