【发布时间】:2018-08-13 21:27:55
【问题描述】:
我正在使用允许具有数组数据类型的 postgresql 数据库,此外 django 还为此提供了 PostgreSQL 特定的模型字段。 我的问题是如何根据数组的最后一个元素过滤对象?
class Example(models.Model):
tags = ArrayField(models.CharField(...))
example = Example.objects.create(tags=['tag1', 'tag2', 'tag3']
example_tag3 = Example.objects.filter(tags__2='tag3')
我想过滤但不知道标签的大小。是否有类似的动态过滤:
example_tag3 = Example.objects.filter(tags__last='tag3')
【问题讨论】:
-
我明白你在问什么,但我不确定你为什么要这样做。执行此操作的方法可能包括在保存时将数组的长度返回到变量中,然后使用该变量作为过滤器。
-
我正在使用 arrayField 来存储我感兴趣的变量的历史记录,所以我想获取最后一个值为 x 的所有记录。每个记录在我所说的标签中可能有不同数量的元素的问题。所以循环所有对象并获取标签的长度会破坏性能
-
我认为您将不得不执行原始 SQL 查询来获取数组长度并在您的过滤器中使用它。其他人可能比我更了解,但这是我最好的建议。
标签: arrays django postgresql