Сейчас я работаю с формой Django, основанной на классе ModelForm, который использует JavaScript на моей странице для получения данных формы с использованием POST.
class MyForm(ModelForm):
data_url = '/form-data/'
dep_fields = '__all__'
class Meta:
model = Sign
fields = '__all__'
exclude = ['name', ]
class Media:
js = ('js/form.js',)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
attrs_dict = {'onchange': 'addForm(this)', 'style': 'display:', 'data-url': f'{self.data_url}'}
if self.data:
'''form fields logic'''
My Javascript выполняет следующие действия. Он хранит мои данные формы следующим образом:
var data = new FormData(obj.form);
, а затем отправляет на мой сервер каждый раз, когда я изменяю любое поле формы:
xhttp.send(data);
И данные формы выглядят так и сохраняются в form self.data:
self.data = {'csrfmiddlewaretoken': ['cpWuNU1JfK'], 'country': ['2'], 'region': [''], 'area': [''], 'color': [''], 'sign': ['']}
(я уменьшил токен для удобства)
Так что все, что мне нужно, это получить идентификатор выбранного поля со своей страницы HTML (идентификатор страны в этом дело). Я добавил следующий код к своему JS:
var field_id = parseInt(obj.id );
xhttp.send(field_id);
И, похоже, он работает, но я не могу понять, где и как я могу получить эти данные (field_id) на моем Django сервере.
UPD: Когда я делаю это следующим образом:
var data = new FormData(obj.form);
var field_id = parseInt(obj.id );
data.append('field_id', field_id);
xhttp.send(data);
значение id
добавляется к моим POST form.data следующим образом:
self.request.POST
: <QueryDict: {'csrfmiddlewaretoken': ['rM0EwOPajAe4i'], 'country': ['1'], 'region': [''], 'area': [''], 'color': [''], 'sign': [''], 'field_id: [1]}
Что заставляет меня думать, что JS посылает это. Мне просто нужно получить field_id
значение отдельно