Обновление формы при выборе значения в поле Django

Есть модель Map в models.py

class Map(models.Model):
  
    country = models.CharField(max_length=50, choices=kinds_counrty)
    activity = models.CharField(max_length=50, choices=kinds_activity)
    period = models.CharField(max_length=50, choices=kinds_period)
    map_kind = models.CharField(max_length=50, choices=kinds_map)
    map_file = models.FileField(upload_to='uploads/%Y/%m/%d/', blank=True)
    dateTimeOfUpload = models.DateTimeField(auto_now = True)

Есть форма MapModelForm

from django.forms import ModelForm, ChoiceField
from .models import Map

class MapModelForm(ModelForm):
    class Meta:
        model = Map
        exclude = ['map_file', 'map_kind']

Есть функция create_map

def create_map(request):
    
    # If this is a POST request then process the Form data
    session_id = f'{platform.node()}:{datetime.now().strftime("%m:%d:%y_%H:%M:%S")}'
    if request.method == 'POST':

        # Create a form instance and populate it with data from the request (binding):
        form = MapModelForm(request.POST)

        # Check if the form is valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required (here we just write it to the model due_back field)
            country = form.cleaned_data.get("country")
            activity = form.cleaned_data.get("activity")
            period = form.cleaned_data.get("period")
            map_kind = form.cleaned_data.get("map_kind")
            mapcreate(
                country=country,
                activity=activity,
                period=period,
                map_kind=map_kind
                      )


            # redirect to a new URL:
            return HttpResponseRedirect(reverse('info:index_page') )

    # If this is a GET (or any other method) create the default form.
    else:
        form = MapModelForm()

    return render(request, 'info/create_map.html', {'form': form})

И шаблон create_map.html

{% extends "base.html" %}
{% block content %}

    <form action="" method="post">
        {% csrf_token %}
        
        <div class="element1" style="background: #CCA69E; float: left; width: 200px;">
       <table>
        {{ form }}
        </table>
        <input type="submit" value="Submit" />
    </form>
    </div>
    
<div class="element2" style=" float: center;"> 
<iframe src="{% url 'info:map' %}" name="" width="940" height="630" frameborder="0" scrolling="yes"> </iframe>
  </div>

{% endblock %}

Вопрос. Каким образом реализовать обновление одних полей после выбора других? Т.е. при выборе страны нужно изменить значения деятельности на те, которые присутствуют в существующих экземплярах модели. К примеру, если я создал несколько экземпляров класса Map со значениями поля country='Россия', и сферами деятельности (activity) 'Политика' и 'Экономика', то при выборе в форме страны 'Россия' мне должно быть разрешено выбрать только значения 'Политика' и 'Экономика'. И такая связь далее по всем полям. Итого должен получится однозначный путь типа 'Россия'->'Экономика'->'Год'->...

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