如何使用django过滤器icontains获得多个字段

时间:2013-02-23 20:11:45

标签: python django search

我正在尝试将我的查询搜索与我的所有模型字段进行比较,但我无法确定如何在多个字段中执行此操作。

这是我的代码。

expense = Expense.objects.filter(user=request.user.id).order_by('date')

q = request.GET['q']
result = expense.filter(name__icontains=q)

我想办理登机手续:nameamountcategory

提前致谢

2 个答案:

答案 0 :(得分:11)

来自Django文档:

“关键字参数查询 - 在filter()等中 - 与”AND“一起编辑。如果需要执行更复杂的查询(例如,带OR语句的查询),则可以使用Q对象。”

from django.db.models import Q
expense.objects.filter(
    Q(name__icontains=q) | Q(amount__icontains=q) | Q(category__icontains=q)
)

我不确定您的模型中的数量和类别的类型,因此icontains可能不适用于它们。

请参阅this link

答案 1 :(得分:0)

这很像Jurgenreza的回答。

from django.db.models import Q
expense.objects.filter(
    Q(name__icontains=q) | Q(amount__icontains=q) | Q(category__icontains=q)
)