我有一个名为 UserInfo 的模型,其中包含以下字段: id, 名字, 号码
我想创建一个自定义搜索页面。这将包含以下元素: 搜索框、搜索按钮 与 NAME 匹配的文本字段 与 NUMBER 匹配的文本字段
它应该如何工作: 假设我在各自的文本框中输入“John”作为姓名,输入“1234”作为号码,然后单击“搜索”。结果应显示名称为“John”、编号为“1234”的条目。
我猜查询类似于以下内容: UserInfo.objects.filter(name='John').filter(number='1234')
我以前在 PHP 中做过这种查询,但在 Django 中不起作用。我想知道我可以使用什么代码在查询中关联多个过滤器,这样如果在名称和数字文本框中都有数据输入,我会得到类似上面的查询,但如果我只搜索名称,则查询变为: 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() 不会检索所有记录。)
关于mysql - 如何创建 Django 自定义查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776117/