Получить идентификатор объекта из HTML в запросе.POST - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть пользователь со списком задач, которые он может добавить. Я хочу дать ему возможность удалить эти задачи или пометить как выполненные.

Проблема в том, что мое решение работает только тогда, когда у пользователя есть одна задача, из-за проблемы неуникального идентификатора

Есть ли способ передать идентификатор в html, чтобы он был легко доступен в представлениях? Спасибо!

Это мой текущий код

{% for task in tasks %}
        <form id='is_checked' method='POST' action="{% url 'mark_as_done'%}" enctype="multipart/form-data">
            {% csrf_token %}
            <div class="input-group-text">
                <input type="hidden" id="id_checked" value="{{task.id}}" name = "id_checked">
            </div>
        </form>

        <form class="input-group" action="{% url 'delete_task'%}" method='POST' enctype="multipart/form-data">
            {% csrf_token %}
            <div class="input-group-prepend">
                <div class="input-group-text">
                    <input onChange="document.getElementById('is_checked').submit()" type="checkbox" {% if task.is_done %}checked{% endif %}>
                </div>
            </div>
            <h7 type="text" class="form-control">{{task}}</h7>
            <input type="hidden" id="id" value="{{task.id}}" name = "id">
            <button type="submit" class="input-group-append btn btn-danger">Delete</button>
        </form>


    {% endfor %}

А в просмотрах:

def delete_task(request):
    if request.method == 'POST':
        task = Task.objects.get(pk=request.POST['id'])
        task.delete()
        return redirect('tasks')

@login_required()
def mark_as_done(request):
    if request.method == 'POST':
        task = Task.objects.get(pk=request.POST['id_checked'])
        task.is_done = True
        task.save()
    return redirect('tasks')```



...