Я предлагаю вам вместо этого использовать GET-запрос для отображения вашей таблицы. Удаление должно происходить через POST и использовать redirect
(вместо render
), чтобы снова обратиться к запросу GET.
Если вы хотите сохранить параметры фильтра между запросами, я предлагаю вам использовать DjangoSession
для хранения этой информации.
Может быть, вот так:
urls.py
url(r'^characters$',
views.show_characters,
name='show-characters'),
url(r'^characters/(?P<char_pk>[0-9]+)/delete/$',
views.delete_character,
name='delete-character'),
views.py
def show_characters(request):
# this will be a standard GET request to display the table
filter_param_1 = request.GET.get('filter_param_1', None)
if filter_param_1 is None:
# if there is no GET param, look in the session
filter_param_1 = request.session.get('filter_param_1', None)
else:
# if there is a GET param, store it in the session for the next time
request.session['filter_param_1'] = filter_param_1
ctx = {
'data': Characters.objects.filter(some_field=filter_param_1),
}
return render(request, 'users/characters_found_table.html', ctx)
def delete_character(request, char_pk):
if request.method == "POST":
character = get_obect_or_404(Characters, pk=char_pk)
# here you can delete other related objects, if they're not set up for delete CASCADE
character.delete()
messages.success(request, 'delete was successful')
return redirect('show-characters')
Это работает для вас?