Как получить значение или Parse HTML dropdown selected:option text как переменную в views.py в Django?
У меня есть трехсторонний выпадающий список, созданный из трех разных таблиц, связанных внешними ключами.
####################################################################################
class State(models.Model):
state_name = models.CharField(max_length=50, unique=True)
state_id = models.PositiveIntegerField(unique=True, validators=[MinValueValidator(1), MaxValueValidator(100)])
class Meta:
db_table = 'State_Names'
def __str__(self):
return self.state_name
####################################################################################
class District(models.Model):
state_name = models.ForeignKey(State, on_delete=models.CASCADE)
state_id = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(100)])
district_name = models.CharField(max_length=50, unique=True)
district_id = models.PositiveIntegerField(unique=True, validators=[MinValueValidator(1), MaxValueValidator(1000)])
class Meta:
db_table = 'District_Names'
def __str__(self):
return self.district_name
####################################################################################
class Block(models.Model):
state_name = models.CharField(max_length=50)
state_id = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(100)])
district_name = models.ForeignKey(District, on_delete=models.CASCADE)
district_id = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(1000)])
block_name = models.CharField(max_length=50)
block_id = models.PositiveIntegerField(unique=True, validators=[MinValueValidator(1), MaxValueValidator(8000)])
class Meta:
db_table = 'Block_Names'
def __str__(self):
return self.block_name
views.py - это как
def get_state_district_and_block_string(request):
if request.method == "POST":
state_name_is=request.POST.get('state_dropdown')
print("state_name_is", state_name_is)
district_name_is=request.POST.get('district_dropdown')
block_name_is=request.POST.get('block_dropdown')
return render(request, 'index.html')
Dropdown.html имеет вид
<div class="form-group">
<label for="state_dropdown">Select State</label>
<select class="form-control" id="state_dropdown" name="state_dropdown" aria-label="...">
<option selected disabled="true" class="col-md-12 school-options-dropdown text-center"> --- Select State --- </option>
{% for state in stateDetailsInDropdown %}
<option class="col-md-12 school-options-dropdown text-center" value="{{state.state_name}}">{{state.state_name}} </option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="district_dropdown">Select District</label>
<select class="form-control" id="district_dropdown" name="district_dropdown" aria-label="...">
<option selected disabled="true" class="col-md-12 school-options-dropdown text-center"> --- Select District --- </option>
{% for district in DistrictDetailsInDropdown %}
<option class="col-md-12 school-options-dropdown text-center" value="{{district.state_name}}">{{district.district_name}} </option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="block_dropdown">Select Block</label>
<select class="form-control" id="block_dropdown" name="block_dropdown" aria-label="...">
<option selected disabled="true" class="col-md-12 school-options-dropdown text-center"> --- Select Block --- </option>
{% for block in BlockDetailsInDropdown %}
<option class="col-md-12 school-options-dropdown text-center" value="{{block.state_name}}">{{ block.block_name}} </option>
{% endfor %}
</select>
</div>
Из этого Dropdown.html, значение, которое извлекается views.py
из этого, например: value="{{block.state_name}}">{{ block.block_name}}
является 1st set of curly brackets
но меня интересует 2nd one containing the string of interest
, потому что он возвращает то же значение состояния методом request.POST.get
в 1st set of curly brackets
Jquery для получения связанного варианта выглядит следующим образом (PS: выпадающий список работает нормально только для любых 2 наборов переменных, но не для последнего варианта )
$(document).ready(function(){
var states = $('#state_dropdown');
districts = $('#district_dropdown');
districtOptions = districts.find('option');
states.on('change',function(){
districts.html(districtOptions.filter('[value="'+this.value+'"]'));
}).trigger('change');
let = document.getElementById("district_dropdown").textContent;
console.log("text", text)
});
$(document).ready(function(){
var districts = $('#district_dropdown');
blocks = $('#block_dropdown');
blockOptions = blocks.find('option');
districts.on('change',function(){
blocks.html(blockOptions.filter('[value="'+this.value+'"]'));
}).trigger('change');
});
Как получить текст выбранной опции, присутствующей в 2nd set of curly brackets
, из выпадающего списка как переменную python в views.py
.