【发布时间】:2018-10-19 15:04:51
【问题描述】:
这是数据库的样子:
id | Post | tag
1 | Post(1) | 'a'
2 | Post(1) | 'b'
3 | Post(2) | 'a'
4 | Post(3) | 'b'
这是模块的代码
class PostMention(models.Model):
tag = models.CharField(max_length=200)
post = models.ForeignKey(Post,on_delete=models.CASCADE)
这是搜索的代码,
def findPostTag(tag):
keywords=tag.split(' ')
keyQs = [Q(tag=x) for x in keywords]
keyQ = keyQs.pop()
for i in keyQs:
keyQ &= i
a = PostMention.objects.filter(keyQ).order_by('-id')
if not a:
a=[]
return a
(此代码无法正常工作)
我撤回标签并将每个标签保存为数据库中的一行。现在我想做一个搜索功能,用户可以同时输入多个关键字,比如'a b',它会返回'Post(1)'。我搜索了一些类似的情况,但似乎都是关于同时在一行中搜索多个关键字,比如使用Q(tag='a') & Q(tag='b'),它会搜索同时等于'a'和'b'(在我看来),这不是我想要的(显然没有结果)。那么有什么办法可以解决这个问题吗?谢谢。
【问题讨论】:
-
不确定你的意思。如果您发布实际代码,通常会更好地理解。就像你的 Django 模型的相关部分,也许你到目前为止已经尝试过的查询。