【发布时间】:2020-03-23 09:59:27
【问题描述】:
我有一个模型 product_details,包含以下字段 brand_name、model_name、bodystyle、transmission 和 min_price、max_price
下拉列表中的预算值示例是
1 - 5
5 - 10
10 - 15
我有 5 个选择下拉字段,我想根据这些字段过滤我的结果。
我正在使用下面的方法根据前三个字段进行过滤
def select(request):
q1 = request.GET.get('brand')
q2 = request.GET.get('model')
q3 = request.GET.get('bodyStyle')
#q4 = request.GET.get('budget')
cars = product_details.objects.filter(Q(bodystyle__icontains=q3)|Q(brand_name__icontains=q1)|Q(model_name__icontains=q2))
#cars = product_details.objects.filter(bodystyle=q3)
return render(request, 'search/search_results.html', {'cars': cars})
我有两个问题
1:如果从下拉列表中仅选择 1 或 2 个值,我如何过滤。我的 if 条件应该是什么? 2. 如何根据预算字段的范围进行筛选?由于预算需要与 min_price 和 max_price 进行比较。
任何帮助或指导将不胜感激。
模型定义:
class product_details(models.Model):
product_id=models.ForeignKey(products, on_delete=models.CASCADE)
model_id=models.ForeignKey(product_models, on_delete=models.CASCADE)
variant_id=models.CharField(primary_key=True,max_length=10)
brand_name=models.CharField(max_length=255, blank=True, null=True)
model_name=models.CharField(max_length=255, blank=True, null=True)
variant_descr=models.CharField(max_length=255, null=True, blank=True)
transmission=models.CharField(max_length=255, blank=True, null=True)
bodystyle=models.CharField(max_length=255, blank=True, null=True)
min_price=models.FloatField(blank=True, null=True)
max_price=models.FloatField(blank=True, null=True)
【问题讨论】:
-
谢谢,这对我的问题 1 有帮助。您能指导我回答问题 2 吗?
-
如果您提供模型病帮助您
标签: python django django-queryset django-filter django-q