mysql - 如何创建 Django 自定义查询?

标签 mysql django search filter

我有一个名为 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/

相关文章:

mysql - 在 MySQL : selecting publications on keyword but including all keywords in results

django - 如何在可重复使用的应用程序中将 namespace url与Django一起使用

mysql - 在 mysql : table with one column or many smaller columns 中更快的搜索是什么

algorithm - 如果数组未排序,可以使用哪种搜索技术?

MySQL 多对多搜索

mysql - 在 MySQL/SQL 中对同一行进行条件计数

mysql - UNION 两个有序的 MySQL 语句

android - 如何从 mySql 数据库填充 spinner

Django:我可以在本地文件而不是真实的数据库上构建模型吗?

python - Django模型结构允许 'test users'