Обновление базы данных при нажатии пользователем на флажок

Я создал модель для контроля существования определенного списка документов клиента.

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
      ...

    }

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