Почему DJANGO требует сделать два POST запроса, перед тем как удалить запись из БД?

Помогите, пожалуйста, решить проблему. У меня есть страница истории, на которой выводится записи из БД. У каждой записи есть кнопка "удалить", с помощью нее я передаю методом POST id записи и делаю delete(). Но это почему-то работает неправильно, чтобы удалить запись я должен послать два любых POST запроса на странице (либо два раза нажать на "удалить", либо один раз "удалить" и один раз на кнопку применения фильтра по месяцам). Вот код:

views.py

def history(request):
    url_name = request.resolver_match.url_name
    incomeT = IncomeTransaction.objects.all()
    expenseT = ExpenseTransaction.objects.all()
    innerT = InnerTransaction.objects.all()
    transactions = sorted((chain(incomeT, expenseT, innerT)), key=attrgetter('date'), reverse=True)

    filter_value = "all"

    if request.method == 'POST':
        if request.POST.get('history_filter'):
            filter_value=request.POST.get('history_filter')
            if filter_value == "all":
                return render(request, 'core/history.html', {'url_name': url_name, 'transactions':transactions, 'filter_value': filter_value})
            if int(filter_value) in range(1,13):
                incomeT = IncomeTransaction.objects.filter(date__month=int(filter_value))
                expenseT = ExpenseTransaction.objects.filter(date__month=int(filter_value))
                innerT = InnerTransaction.objects.filter(date__month=int(filter_value))
                transactions = sorted((chain(incomeT, expenseT, innerT)), key=attrgetter('date'), reverse=True)
                return render(request, 'core/history.html', {'url_name': url_name, 'transactions':transactions, 'filter_value': filter_value})
        elif request.POST.get('IncomeTransactionId'):
            transactionId=int(request.POST.get('IncomeTransactionId'))
            IncomeTransaction.objects.filter(id=transactionId).delete()
            return render(request, 'core/history.html', {'url_name': url_name, 'transactions': transactions, 'filter_value': filter_value})
    

    return render(request, 'core/history.html', {'url_name': url_name, 'transactions': transactions, 'filter_value': filter_value})

history.html

{% extends 'core/base.html' %}
{% load core_custom_tags %}

{% block title %}История{% endblock %}

{% block content %}

    <h1 class="text-center history-header">История</h1>
    <div class="row">
        <div class="col">
            <form method="POST" action="{% url 'core:history' %}">
                {% csrf_token %}
                <select name="history_filter">
                    <option value="all" {% if filter_value == "all" %}selected{% endif %}>Всё время</option>
                    <option value="1" {% if filter_value == "1" %}selected{% endif %}>Январь</option>
                    <option value="2" {% if filter_value == "2" %}selected{% endif %}>Февраль</option>
                    <option value="3" {% if filter_value == "3" %}selected{% endif %}>Март</option>
                    <option value="4" {% if filter_value == "4" %}selected{% endif %}>Апрель</option>
                    <option value="5" {% if filter_value == "5" %}selected{% endif %}>Май</option>
                    <option value="6" {% if filter_value == "6" %}selected{% endif %}>Июнь</option>
                    <option value="7" {% if filter_value == "7" %}selected{% endif %}>Июль</option>
                    <option value="8" {% if filter_value == "8" %}selected{% endif %}>Август</option>
                    <option value="9" {% if filter_value == "9" %}selected{% endif %}>Сентябрь</option>
                    <option value="10" {% if filter_value == "10" %}selected{% endif %}>Октябрь</option>
                    <option value="11" {% if filter_value == "11" %}selected{% endif %}>Ноябрь</option>
                    <option value="12" {% if filter_value == "12" %}selected{% endif %}>Декабрь</option>
                </select>
                <input type="submit" class="btn btn-primary" value="Отправить">
            </form>
        </div>
    </div>

    {% if transactions %}
        {% for el in transactions %}
    
            {% if el.income_category.name %}
                <div class="row justify-content-center row-transaction-history">
                    <div class="col-5">
                        <div class="card">
                            <div class="card-header">
                                <div class="row">
                                    <div class="col-sm">{{ el.account.name }}</div>
                                    <div class="col-sm history-date">{{ el.date }}</div>
                                </div>
                            </div>
                            <div class="card-body">
                                <div class="row justify-content-around">
                                    <div class="col">
                                        <fieldset class="reset-this redo-fieldset">
                                            <legend class="reset-this redo-legend"> Сумма </legend>
                                            <h5 class="card-title  text-center">+{{ el.amount|division:100 }} руб.</h5>
                                        </fieldset>    
                                    </div>
                                    <div class="col">
                                        <fieldset class="reset-this redo-fieldset">
                                            <legend class="reset-this redo-legend"> Категория </legend>
                                            <h5 class="card-title  text-center">{{ el.income_category.name }}</h5>
                                        </fieldset>  
                                        
                                    </div>
                                </div>
                                {% if el.commentary %}
                                    <div class="row">
                                        <div class="col">
                                            <fieldset class="reset-this redo-fieldset history-commentary">
                                                <legend class="reset-this redo-legend"> Комментарий </legend>
                                                <p class="card-text text-center">{{ el.commentary }}</p>
                                            </fieldset>  
                                        </div>
                                    </div>
                                {% endif %}
                                <div class="row">
                                    <div class="col">
                                        <form method="POST" action="{% url 'core:history' %}">
                                            {% csrf_token %}
                                            <button type="submit" name="IncomeTransactionId" value="{{el.id}}">Удалить</button>
                                        </form>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            {% endif %}

            {% if el.expense_category.name %}
                <div class="row justify-content-center row-transaction-history">
                    <div class="col-5">
                        <div class="card">
                            <div class="card-header">
                                <div class="row">
                                    <div class="col-sm">{{ el.account.name }}</div>
                                    <div class="col-sm history-date">{{ el.date }}</div>
                                </div>
                            </div>
                            <div class="card-body">
                                <div class="row justify-content-around">
                                    <div class="col">
                                        <fieldset class="reset-this redo-fieldset">
                                            <legend class="reset-this redo-legend"> Сумма </legend>
                                            <h5 class="card-title  text-center">-{{ el.amount|division:100 }} руб.</h5>
                                        </fieldset>    
                                    </div>
                                    <div class="col">
                                        <fieldset class="reset-this redo-fieldset">
                                            <legend class="reset-this redo-legend"> Категория </legend>
                                            <h5 class="card-title  text-center">{{ el.expense_category.name }}</h5>
                                        </fieldset>  
                                        
                                    </div>
                                </div>
                                {% if el.commentary %}
                                    <div class="row">
                                        <div class="col">
                                            <fieldset class="reset-this redo-fieldset history-commentary">
                                                <legend class="reset-this redo-legend"> Комментарий </legend>
                                                <p class="card-text text-center">{{ el.commentary }}</p>
                                            </fieldset>  
                                            
                                        </div>
                                    </div>
                                {% endif %}
                            </div>
                        </div>
                    </div>
                </div>
            {% endif %}

            {% if el.account_to.name %}
                <div class="row justify-content-center row-transaction-history">
                    <div class="col-5">
                        <div class="card">
                            <div class="card-header">
                                <div class="row">
                                    <div class="col-sm">{{ el.account_from.name }} -> {{ el.account_to.name }}</div>
                                    <div class="col-sm history-date">{{ el.date }}</div>
                                </div>
                            </div>
                            <div class="card-body">
                                <div class="row justify-content-around">
                                    <div class="col">
                                        <fieldset class="reset-this redo-fieldset inner-amount">
                                            <legend class="reset-this redo-legend"> Сумма </legend>
                                            <h5 class="card-title  text-center">{{ el.amount|division:100 }} руб.</h5>
                                        </fieldset>    
                                    </div>
                                    <div class="col">
                                        <fieldset class="reset-this redo-fieldset">
                                            <legend class="reset-this redo-legend"> Категория </legend>
                                            <h5 class="card-title  text-center">Перевод между своими счетами</h5>
                                        </fieldset>  
                                    </div>
                                </div>
                                {% if el.commentary %}
                                    <div class="row">
                                        <div class="col">
                                            <fieldset class="reset-this redo-fieldset history-commentary">
                                                <legend class="reset-this redo-legend"> Комментарий </legend>
                                                <p class="card-text text-center">{{ el.commentary }}</p>
                                            </fieldset>  
                                            
                                        </div>
                                    </div>
                                {% endif %}
                            </div>
                        </div>
                    </div>
                </div>
            {% endif %}
        {% endfor %}
        
    {% else %}
        <p class="text-center">Транзакций нет</p>
    {% endif %}
{% endblock %}

Ответы (1 шт):

Автор решения: Andrey Maslov

Вероятно у Вас такое происходит потому, что сначала Вы заполняете

    transactions = sorted((chain(incomeT, expenseT, innerT)), key=attrgetter('date'), reverse=True)

т.е. туда заносятся уже все данные которые есть в БД на момент начала view а удаляете данные в конце

            IncomeTransaction.objects.filter(id=transactionId).delete()

после этого в контекст отдаете данные которые были до удаления.

→ Ссылка