Как получить значение или Parse HTML dropdown selected:option text как переменную в views.py в Django?

У меня есть трехсторонний выпадающий список, созданный из трех разных таблиц, связанных внешними ключами.

dropdown model.py имеет следующий вид

####################################################################################
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.

Вернуться на верх