У меня есть новый Django проект с заданными c ограничениями для отображения данных, подлежащих редактированию?
До сих пор у меня было редактирование и обновление форм, которые «работают» для указанной c записи .
У меня есть индекс. html форма, отображающая данные моей модели. Записи группируются по четырем записям.
Ожидается следующее:
- для отображения той же таблицы в форме редактирования / обновления, но с полями, которые можно изменить
- имеет четыре записи для редактирования
- , предварительно заполненные данными четырех последних строк таблицы Бюстгальтеры (на основе даты)
- Когда я действую модификацию, сохраняются 4 новые записи
Я действительно не знаю, как это сделать ...
models.py
class Bras(SafeDeleteModel):
""" A class to create a country site instance. """
_safedelete_policy = SOFT_DELETE_CASCADE
bra_ide = models.AutoField(primary_key = True)
pay_ide = models.ForeignKey(Pays, on_delete = models.CASCADE) # related country
ran_st1 = models.IntegerField("Stratification variable 1", blank=True)
ran_st2 = models.IntegerField("Stratification variable 2", blank=True)
bra_00A_act = models.IntegerField("Arm A activated", default=0, null=True, blank=True)
bra_00A_lib = models.CharField("Arm A label", max_length=50, null=True, blank=True)
bra_00B_act = models.IntegerField("Arm B activated", default=0, null=True, blank=True)
bra_00B_lib = models.CharField("Arm B label", max_length=50, null=True, blank=True)
...
bra_log = models.CharField("User login", max_length = 50)
bra_dat = models.DateTimeField("Date of settings")
log = HistoricalRecords()
index. html
{% extends 'layouts/base.html' %}
{% load static %}
{% load crispy_forms_tags %}
{% block extrahead %}{% endblock %}
{% block title %}Randomization Settings | Coverage{% endblock %}
{% block content %}
<div class='container'>
<br>
<br>
<h1>Randomization Settings - Country: France</h1>
<br>
<br>
<br>
<table id="table_id" class="table table-stripped table-hover" style="width:100%">
<thead>
<tr>
<th>Date</th>
<th>Strate 1</th>
<th>Strate 2</th>
<th>Arm A</th>
<th>Arm B</th>
<th>Arm C</th>
<th>Arm D</th>
<th>Arm E</th>
<th>Arm F</th>
<th>Arm G</th>
<th>Arm H</th>
<th>Arm I</th>
<th>Arm J</th>
<!-- <th>Actions</th> -->
</tr>
</thead>
<tbody>
{% for arm in arms %}
<tr>
<td>{{ arm.bra_dat|date:"M d, Y" }}</td>
<td>
{% if arm.ran_st1 == 1 %}
Yes
{% else %}
No
{% endif %}
</td>
<td>
{% if arm.ran_st2 == 1 %}
Yes
{% else %}
No
{% endif %}
</td>
<td>
{% if arm.bra_00A_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00A_lib == None %}
-
{% else %}
{{ arm.bra_00A_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00B_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00B_lib == None %}
-
{% else %}
{{ arm.bra_00B_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00C_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00C_lib == None %}
-
{% else %}
{{ arm.bra_00C_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00D_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00D_lib == None %}
-
{% else %}
{{ arm.bra_00D_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00E_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00E_lib == None %}
-
{% else %}
{{ arm.bra_00E_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00F_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00F_lib == None %}
-
{% else %}
{{ arm.bra_00F_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00G_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00G_lib == None %}
-
{% else %}
{{ arm.bra_00G_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00H_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00H_lib == None %}
-
{% else %}
{{ arm.bra_00H_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00I_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00I_lib == None %}
-
{% else %}
{{ arm.bra_00I_lib|truncatechars:5 }}
{% endif %}
</td>
<td>
{% if arm.bra_00J_act == 1 %}
✅
{% else %}
-
{% endif %}
{% if arm.bra_00J_lib == None %}
-
{% else %}
{{ arm.bra_00J_lib|truncatechars:5 }}
{% endif %}
</td>
<!-- <td>
<a style="margin-right: 40px" data-target="" class="randomization_settings" href="">Edit</a>
<a style="margin-right: 40px" data-target="" class="randomization_settings" href="{% url 'randomization_settings:update' arm.bra_ide %}">Update</a>
</td> -->
</tr>
{% endfor %}
</tbody>
</table>
{% if liste_existe is not None and not liste_existe %}
<p>No records found</p>
{% endif %}
</div>
{% endblock %}
{% block extrabody %}
<!--DataTable-->
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.20/js/dataTables.bootstrap4.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/dataTables.bootstrap4.min.css">
<!--DataTable-->
<!--Modal-->
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<!--Modal-->
<script>
$(document).ready( function () {
// http://live.datatables.net/ficemafo/1/edit
$("#table_id").one("preInit.dt", function () {
$("#table_id_filter label").append('<a data-target="" class="btn btn-primary" href="" style="width: 190px;margin-left:10px;">Modify settings</a>');
});
if(window.navigator.language.slice(0, 2) == 'fr'){
var table = $('#table_id').DataTable({
lengthMenu: [5,10],
"pageLength": 4,
"bAutoWidth": false,
"language": {
"url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/French.json"
},
});
} else {
var table = $('#table_id').DataTable({
lengthMenu: [5,10],
"pageLength": 4,
"bAutoWidth": false,
});
}
} );
</script>
{% endblock %}