Обновление формы при выборе значения в поле 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) 'Политика' и 'Экономика', то при выборе в форме страны 'Россия' мне должно быть разрешено выбрать только значения 'Политика' и 'Экономика'. И такая связь далее по всем полям. Итого должен получится однозначный путь типа 'Россия'->'Экономика'->'Год'->...