如何创建Django自定义查询?

迷你GunnR

我有一个名为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章