我有一个名为UserInfo的模型,具有以下字段:id,name,number
我想创建一个自定义搜索页面。这将包含以下元素:搜索框,搜索按钮匹配NAME的文本字段匹配NUMBER的文本字段
它应该如何工作:假设我在相应的文本框中输入“ John”作为名称,并输入“ 1234”作为数字,然后单击“搜索”。结果应该显示给我带有“ John”作为名称和“ 1234”作为数字的条目。
该查询类似于以下我猜的东西:UserInfo.objects.filter(name ='John')。filter(number ='1234')
我之前曾在PHP中进行过这种查询,但是在Django中不起作用。我想知道我可以使用什么代码来关联查询中的多个FILTERS,以便如果在名称和数字文本框中都输入了数据,则会收到类似上述的查询,但是如果我仅搜索名称,则查询将变为:UserInfo .object.filter(name ='John')而不是
UserInfo.object.filter(name ='John')。filter(number ='')
我不知道,对此应该有一个简单的解决方案。很混乱。:-/
过滤方法是可链接的,不可变的:)
def search_user(name=None, number=None):
# Uncomment the following lines to return NO records when no input.
# if not name and not number:
# return UserInfo.objects.none()
qs = UserInfo.objects.all()
if name:
qs = qs.filter(name=name)
if number:
qs = qs.filter(number=number)
return qs
如果没有输入,此示例将返回所有记录。
(请注意,QS是惰性的,除非稍后访问,否则all()不会检索所有记录。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句