Django交叉筛选搜索?
如何创建一个查询来过滤这样的模型 我的模型是:Django交叉筛选搜索?,django,Django,如何创建一个查询来过滤这样的模型 我的模型是: class test(models.Model): name = models.CharField(max_length=50) status = models.CharField(max_length=50) other = models.CharField(max_length=50) 我希望这样,而不是使用AND或我过滤查询。我曾尝试将|改为&但不起作用。为了使其更复杂,如果我在模板上设置了过滤器作为表单,则: Fi
class test(models.Model):
name = models.CharField(max_length=50)
status = models.CharField(max_length=50)
other = models.CharField(max_length=50)
我希望这样,而不是使用AND或我过滤查询。我曾尝试将|改为&但不起作用。为了使其更复杂,如果我在模板上设置了过滤器作为表单,则:
Filter By Name: DropDownList of Names
Filter By Status: DropDownList of Statuses
Filter By Other: DropDownList of Others
如果从下拉框中选择name1、status1和other1,则应显示以下结果:
results = test.objects.filter(name=name1,status=status1,other=other1)
以下是我在views.py中的当前查询:
def search(request):
query = request.GET.get('q', '')
if query:
qset = (
Q(name__icontains=query) |
Q(status__icontains=query) |
Q(other__icontains=query)
)
results = test.objects.filter(qset).distinct()
else:
results = []
return render_to_response("test/search.html", {
"results": results,
"query": query
})
当前仅搜索名称、状态或其他。如果我将|更改为-,它将搜索所有这些内容,但在显示结果时不会显示任何内容,因为表单下拉框中的查询处理未链接。如何链接它们?如何为特定字段的下拉列表设置“全部”选项
我希望我已经说清楚了。谢谢。我建议您看看这个应用程序。它可以通过表单下拉菜单自动化所有例程,并通过搜索/筛选查询生成查询集: Django filter是一个可重用的Django应用程序,允许用户 动态筛选查询集。它需要Python2.4或更高版本。对于 使用和安装说明请参阅文档目录 Django过滤器可用于生成与 Django管理员的
列表过滤器界面。它有一个非常相似的API
到Django的ModelForms
。例如,如果您有一个产品模型
您可以为其设置一个过滤器集,代码为:
import django_filters
class ProductFilterSet(django_filters.FilterSet):
class Meta:
model = Product
fields = ['name', 'price', 'manufacturer']
在你看来,你可以这样做:
def product_list(request):
filterset = ProductFilterSet(request.GET or None)
return render_to_response('product/product_list.html',
{'filterset': filterset})
有关更多信息,请参阅文档目录
还有,category
与您的车型有什么关系?非常感谢,就是这个