Обновление базы данных при нажатии пользователем на флажок
Я создал модель для контроля существования определенного списка документов клиента.
models.py
class PersonalDocumentation(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, verbose_name='Project')
cnd = models.BooleanField(default=False, verbose_name='CND proponente')
producer_registration = models.BooleanField(default=False, verbose_name='Inscrição de produtor rural')
sales_invoices_agriculture = models.BooleanField(default=False, verbose_name='Notas de comercialização agrícolas (3 anos)')
sales_invoices_livestock = models.BooleanField(default=False, verbose_name='Notas de comercialização pecuária (5 anos)')
rg = models.BooleanField(default=False,verbose_name="RG")
cpf = models.BooleanField(default=False, verbose_name='CPF')
wedding_certificate = models.BooleanField(default=False, verbose_name='Certidão de casamento')
rg_spouse = models.BooleanField(default=False, verbose_name='RG conjuge')
cpf_spouse = models.BooleanField(default=False, verbose_name='CPF conjuge')
Я хотел бы показать эти данные в формате чекбокса и чтобы база данных обновлялась, когда пользователь ставит/снимает галочку с какого-либо элемента. Единственный способ, который я нашел, это сделать один url для каждого документа
Я начал думать, что, возможно, созданная мной модель - не лучший вариант. И, возможно, лучше сделать только одно поле со списком документов, принадлежащих клиенту.
Вы хотите работать с таким шаблоном, как этот:
views.py
def update_personal_documentation(request):
''' this method unpacks a post request and does something with it '''
# unpack request:
date = request.POST.get('date')
# do something with date
...
# create the response:
response = {'message':'OK'}
return JsonResponse(response)
index.html
<button id='btn'>Click Me!</button>
<script src="{% static 'scripts.js' %}"></script>
scripts.js
$('#btn').click(function() {
/* this method sends a post request to the backend */
$.ajax({
url : 'submit_form',
type : 'POST',
data : {
date : new Date(),
...
},
success : function(response) {
/* this method executes on a successful response from the backend */
var message = response.message
// do something with the message, route user to new page, close form
...
}
});
});