Django App Refresh Issue
После отправки формы для обновления / удаления / создания элементов представление (таблица CRUD) не обновляется.
Проблема началась после того, как я добавил фильтрацию модели
Вот соответствующие фрагменты кода:
views.py:
def item_list(request):`enter code here`
user_list = item.objects.all()
user_filter = UserFilter(request.GET, queryset=user_list)
return render(request, 'items/item_list.html', {'filter': user_filter})
def search(request):
user_list = item.objects.all()
user_filter = UserFilter(request.GET, queryset=user_list)
return render(request, 'items/item_list.html', {'filter': user_filter})
def save_item_form(request, form, template_name):
data = dict()
if request.method == 'POST':
if form.is_valid():
form.save()
print('x')
data['form_is_valid'] = True
user_list = item.objects.all()
user_filter = UserFilter(request.GET, queryset=user_list)
data['html_item_list'] = render_to_string('items/includes/partial_item_list.html', {'filter': user_filter})
else:
data['form_is_valid'] = False
context = {'form': form}
data['html_form'] = render_to_string(template_name, context, request=request)
return JsonResponse(data)
def item_create(request):
if request.method == 'POST':
form = itemform(request.POST)
else:
form = itemform()
return save_item_form(request, form, 'items/includes/partial_item_create.html')
def item_update(request, pk):
Item = get_object_or_404(item, pk=pk)
if request.method == 'POST':
print('postx')
form = itemform(request.POST, instance=Item)
else:
form = itemform(instance=Item)
print('postitem')
return save_item_form(request, form, 'items/includes/partial_item_update.
books.js:
$(function () {
/* Functions */
var loadForm = function () {
var btn = $(this);
$.ajax({
url: btn.attr("data-url"),
type: 'get',
dataType: 'json',
beforeSend: function () {
$("#modal-book .modal-content").html("");
$("#modal-book").modal("show");
},
success: function (data) {
$("#modal-book .modal-content").html(data.html_form);
}
});
};
var saveForm = function () {
var form = $(this);
$.ajax({
url: form.attr("action"),
data: form.serialize(),
type: form.attr("method"),
dataType: 'json',
success: function (data) {
if (data.form_is_valid) {
alert("Book created!"); // <-- This is just a placeholder for now for testing
$("#book-table tbody").html(data.html_item_list);
$("#modal-book").modal("hide");
}
else {
$("#modal-book .modal-content").html(data.html_form);
}
}
});
return false;
};
/* Binding */
// Create book
$(".js-create-book").click(loadForm);
$("#modal-book").on("submit", ".js-book-create-form", saveForm);
// Update book
$("#book-table").on("click", ".js-update-book", loadForm);
$("#modal-book").on("submit", ".js-book-update-form", saveForm);
// Delete book
$("#book-table").on("click", ".js-delete-book", loadForm);
$("#modal-book").on("submit", ".js-book-delete-form", saveForm);
});
partial_item_list.html:
{% for item in filter.qs %}
<tr>
<td></td>
<td>{{ item.type }}</td>
<td>{{ item.priorisee }}</td>
<td>{{ item.nom_projet }}</td>
<td>{{ item.traitant }}</td>
<td>{{ item.etat }}</td>
<td>{{ item.no_sd }}</td>
<td>{{ item.ref_outil }}</td>
<td>{{ item.cause_blocage }}</td>
<td>{{ item.date_postee }}</td>
<td>{{ item.date_pec }}</td>
<td>{{ item.date_validation }}</td>
<td>{{ item.date_fintraitment }}</td>
<td>{{ item.date_bloques }}</td>
<td>{{ item.date_fin_traitment_implementation }}</td>
<td style="width: 150px">
<button type="button"
class="btn btn-warning btn-sm js-update-book"
data-url="{% url 'item_update' item.id %}">
<span class="glyphicon glyphicon-pencil"></span> Edit
</button>
<button type="button"
class="btn btn-danger btn-sm js-delete-book"
data-url="{% url 'item_delete' item.id %}">
<span class="glyphicon glyphicon-trash"></span> Delete
</button>
</td>
</tr>
{% empty %}
<tr>
<td colspan="8" class="text-center bg-warning">No entry</td>
</tr>
{% endfor %}
После добавления нового элемента в модель он также должен обновить. Не могли бы вы помочь мне решить эту проблему? Если что-то еще нужно, пожалуйста, дайте мне знать. :)