Входное значение, установленное с помощью селектора jquery, не публикуется
Есть такая проблема: я создал форму с помощью django. Форма содержит два поля charfields для имени и адреса, и два поля datetimefields одно для start_date и другое для stop_date. Наконец, есть две радиокнопки, такие, что:
- когда первая радиокнопка отмечена, значение поля start_date устанавливается в date.now(), используя селектор jquery
- когда вторая радиокнопка отмечена, поля start_date и stop_date отключаются, по-прежнему используя селектор jquery. Приведенный выше код работает хорошо. Однако, когда значение start_date успешно установлено, я должен отправить данные формы с помощью метода jquery ajax post в представление django, значение start_date не отправляется вообще, в то время как значения других полей отправляются. Я не знаю, как решить эту проблему. .
Вот мой код
template.html
HTML
{% extends 'base.html' %}
<div class="center">
<form action="" invalidate>
{% crispy form form.helper %}
</form>
</div>
script.js
JavaScript
$('input:radio').click(function){
if ($(this).val() === '1'){
var start_date = new Date();
$('#id_start_date').val(start_date);
}
else if ($(this).val() === '0'){ document.getElementById('id_stop_date').disabled = true;
document.getElementById('id_start_date').disabled = true;
}
}
$("form").on("submit", function (e){
var name = $("#id_name");
var type = $("id_type");
var start_date = $("id_start_date");
var stop_date = $("id_stop_date");
$.ajax({
type:"POST",
url:"{% url 'postAccount' %}",
data:{
csrfmiddlewaretoken: document.querySelector('input[name="csrfmiddlewaretoken"]').Val(),
name:name, type:type, start_date:start_date, stop_date: stop_date
},
contentType:"application/json; charset=utf-8",
dataType:"json",
success: function (response){
var response = JSON.parse(response ['instance']),
console.log(response);
}
});
e.preventDefault();
});
views.py
python
def postAccount(request):
if is_ajax(request) and request.method == 'POST':
form = AccountForm (request.POST)
if form.is_valid():
instance = form.save()
ser_instance = serializers.serialize('json', [ser_instance,])
return JsonResponse({"instance":ser_instance}, status=200)
return JsonResponse ({"error":""}, status=400)
Отключенные входы не будут отображаться в request.POST
- вам может повезти больше, если вместо этого вы будете использовать атрибут readOnly
, он будет делать практически то же самое, но будет включать значение в request.POST