Проблемы с кнопкой редактирования в Django

Я новичок и только пробую функциональность Django. Я создал кнопку для редактирования значения в базе данных в Django, но она не работает пишет. Проблема в следующем: когда я нажимаю на кнопку (из файла notes.html), происходит перенаправление на страницу edit_note.html, но значения в полях пустые. Когда я вручную нажимаю на адрес в браузере, все работает нормально. Я не понимаю, где я допустил ошибку.

в файле views.py:

class EditNoteView(UpdateView):
model = Notes
form_class = NotesForm
template_name = 'notes/edit_notes.html'
context_object_name = 'note'

def get_success_url(self):
    return reverse_lazy('edit_note', kwargs={'pk': self.object.pk})

в urls.py:

urlpatterns = [
path('', home, name='home'),
path('notes/', NoteView.as_view(), name='notes'),
path('<int:pk>/edit', EditNoteView.as_view(), name='edit_note'),

в файле notes.html:

{% for i in all_notes %}
    <tr>
    <td>{{ i.notes_category }}</td>
    <td>{{ i.title }}</td>
    <td>{{ i.text }}</td>
    <td>{{ i.reminder_data_time }}</td>
    <td>
        <form action="{% url 'edit_note' i.id %}" method="post">
            {% csrf_token %}
            <div class="btn-small-group">
                <button type="submit">Edit</button>
            </div>
        </form>

    </td>
    <td>
        <div class="btn-small-group">
            <button type="submit">Delete</button>
        </div>
    </td>
{% endfor %}

в edit_notes.html:

<form action="{% url 'edit_note' note.id %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <div class="btn-small-group">
        <button type="submit">Edit</button>
    </div>

</form>

введите описание изображения здесь

введите описание изображения здесь

Проблема заключается в методе, который вы используете для доступа к форме редактирования. Вы используете метод POST вместо метода GET. Из-за этого Django хочет сохранить отредактированный объект вместо того, чтобы отобразить форму редактирования. Вы должны получить несколько ошибок валидации.

Решение

Измените метод запроса на метод GET Или используйте тег якоря, как показано ниже Редактировать

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