gpt4 book ai didi

python - GQL:多值属性的不相等过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:38 25 4
gpt4 key购买 nike

对 GAE 的数据存储进行一些修改后,我发现我想不出一个合适的方法来过滤掉结果,即在多值属性上使用不等式过滤器“!=”:

class Entry(db.Model):
...
tags = db.StringListProperty()

e1 = Entry()
e2 = Entry()
e1.tags = ['tag1', 'tag2', 'tag3']
e2.tags = ['tag1', 'tag3', 'tag4']

# I want to exclude all the results containing 'tag2'
db.GqlQuery("""SELECT * FROM Entry
WHERE tags != 'tag2' """)

问题是这个查询返回了 e1e2 但我只想要 e2

我认为发生这种情况是因为不等式过滤器的计算结果为任何(如果至少有一个值是 != 'tag2',则为 TRUE。有一种方法可以将过滤器应用于 ALL?(如果所有值都是 TRUE,则为 != 'tag2 ')?

我知道 GAE 的数据存储不是关系型的,但我想知道如何巧妙地解决/思考这类查询。

谢谢;)

最佳答案

这个问题我想了很多,我觉得没有什么好的方法(如果我错了请指正)。我不聪明的解决方案是不使用 StringListProperty 并级联一堆过滤器:

class Entry(db.Model):
...
tag_1 = db.StringProperty();
tag_2 = db.StringProperty();
...
Entry.all().filter('tag_1 !=', tag).filter('tag_2 !=', tag) ...

我不会开始描述此解决方案的明显问题,但至少它可以满足您的需求。

关于python - GQL:多值属性的不相等过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com