У меня есть форма поиска с id, price_from, price_to и drive_from, driven_too, но так как цена и ведомость - это одна и та же логика, я фокусируюсь только на одном из них, так как price_from и price_to не в модели, это дает мне ошибка, поскольку этот параметр не существует, поэтому он не может ничего сравнивать.
Как я могу искать в объектах автомобиля объект, цена которого находится в этом диапазоне (price_from - price_to), должен ли я изменить свою модель?
# model
class Car(models.Model):
id = models.CharField(max_length=255)
number = models.CharField(max_length=255)
price = models.IntegerField()
# view
def search(request):
if 'search_filter' in request.GET:
search_params = request.GET.dict()
search_params.pop("search_filter")
price_from = search_params['price_from']
price_to = search_params['price_to']
q_list = [Q(("{}__icontains".format(param), search_params[param])) for param in search_params
if search_params[param] is not None]
my_query = Car.objects.filter(reduce(operator.and_, q_list))
cars = [{
'id': x.id,
'driven': x.driven,
'price': x.price,
} for x in my_query
]
return JsonResponse({'data': cars})
context = {'cars': Car.objects.all().order_by('price')}
return render(request, 'cars/car_index.html', context)