2013-11-28 108 views
0

有一些字段的模型。我需要搜索表格中的一些行並檢查多個字段:f1,f2,f3。 所以,查詢可以匹配一到三個字段。例如,f1匹配,但f2和f2不匹配。或者f1和f2匹配但f3不匹配。等等。Django ORM非嚴格搜索多個字段

我想應該是這樣的:

models_list = Model.objects.filter(f1__contains=query, 
            f2__contains=query, 
            f3__contains__query) 

但如何做到這一點的條件可選而不是強制性的?

回答

2

您需要使用Q objects

from django.db.models import Q 

Model.objects.filter(
    Q(f1__contains=query) | 
    Q(f2__contains=query) | 
    Q(f3__contains=query) 
) 

如果你正在使用MySQL,可以考慮使用search代替 - 它比contains快了很多,因爲它使用的全文索引。

+0

它的工作原理!謝謝。 – Paul