我目前正在Django中实现搜索功能,并计划使用与过滤器相关的功能。在阅读了关于django文档的一些文档之后,在我看来,关键字可以只是varchar类型,在下面的例子中 - 'name'提交
inner_qs = Blog.objects.filter(name__icontains='Cheddar')
问题是,如果此Blog表有一个名为writer的外键,那么
inner_qs = Blog.objects.filter(writer.name__icontains='John')
是不允许的,显示语法错误,关键字不能是表达式。但我真的想把外键的某些字段作为搜索关键字(例如writer.name),有没有办法这样做?非常感谢你
答案 0 :(得分:3)
考虑到您需要按编写者的名称进行过滤,而编写者是Blog表中的外键,您可以使用:
inner_qs = Blog.objects.filter(writer__name__icontains='John')
在Django documentation here中提及。