我有一个使用django的blog应用程序,有以下模型
class Category(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(unique=True,max_length=30,null=False,blank=False)
class Article(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=100,null=False,blank=False)
category=models.ForeignKey(Category,null=False,blank=False)
summary=models.CharField(null=False,blank=False,max_length=400)
content = models.TextField(null=False, blank=False)
class Comment(models.Model):
id=models.AutoField(primary_key=True)
article=models.ForeignKey(Article,null=False,blank=False)
visitor_name=models.CharField(max_length=50,null=False,blank=False)
content=models.TextField(null=False,blank=False)
在管理区域,我试图实现一个搜索引擎,允许管理员使用多个字段搜索评论。
我正在使用以下代码:
all_queries = None
keywords=''
search_fields = ('visitor_name','content','article__title','article__resume','article__category__title','article__content')
for keyword in keywords.split(' '):
keyword_query = None
for field in search_fields:
each_query = Q(**{field + '__icontains': keyword})
if not keyword_query:
keyword_query = each_query
else:
keyword_query = keyword_query | each_query
if not all_queries:
all_queries = keyword_query
else:
all_queries = all_queries & keyword_query
comments = Comment.objects.filter(all_queries).distinct().order_by('-date')
我遇到的问题是这一行:
search_fields = ('visitor_name','content','article__title','article__resume','article__category__title','article__content')
例如这一行:
search_fields = ('visitor_name','content')
工作非常好,因为它正好有两个搜索字段。
如果我只向数组中添加一个字段,它将不起作用