Извлечение данных в соответствии с выбранным элементом выпадающего списка в django
У меня есть выпадающий список, который заполняется "диапазоном цен" из базы данных. Я хочу показать соответствующую "цену" в соответствии с "диапазоном цен". например, в базе данных у меня есть такая строка
Price Range Price
"0-1500" 28
"1501-1750" 30
Я хочу, чтобы при выборе диапазона "1501-1750" соответствующее значение "цена" отображалось в поле ввода или теге параграфа.
Ниже приведены мои файлы Model.py, views.py и home.html
models.py
from django.db import models
class price_range(models.Model):
name = models.CharField(max_length=100, null=False)
price = models.IntegerField(null=False)
views.py
from django.shortcuts import render
from range.models import price_range
def showobj(request):
displayvalues = price_range.objects.all()
return render(request, 'range/home.html', {"range":displayvalues})
home.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Range</title>
</head>
<body>
<center>
<select name="drop1">
<option selected disabled="true">Select the Price Range</option>
{% for results in range %}
<option> {{results.name}} </option>
{% endfor %}
</select>
</center>
</body>
</html>
Этот вопрос очень помог мне в создании логики для этой проблемы. [Django]Как вернуть значение в представление после выбора элемента из выпадающего списка
views.py
from django.shortcuts import render
from range.models import price_range
def showobj(request):
selected_range = None
range_price = price_range.objects.all()
if request.method == "POST":
selected_range = request.POST.get("range")
range_price = range_price.filter(name=selected_range)
price = price_range.objects.order_by('name').values_list('name', flat=True)
context = {
'ranges': price,
'range_price': range_price,
'selected_range': selected_range,
}
return render(request, 'range/price_range.html', context)
price_range.html
<center>
<h1>Index</h1>
<form method="post">
{% csrf_token %}
{% if selected_range %}
{% for rest in range_price %}
<input name="price_value" value="{{ rest.price }}"></input>
{% endfor %}
{% endif %}
<select name="range">
<option selected disabled="true">Select the Price Range</option>
{% for range in ranges %}
<option value="{{ range }}" {% if selected_range == range %} selected="selected" {% endif %}>{{ range }}</option>
{% endfor %}
</select>
<input type="submit" value="Select">
</form>
</center>