Для реализации этой функциональности в Django вам потребуется выполнить несколько шагов.
1. Создайте модель, представляющую элемент списка дел. Модель должна содержать поле "completed", которое будет хранить статус завершенности задачи. Например, вы можете создать следующую модель:
from django.db import models class Task(models.Model): name = models.CharField(max_length=200) completed = models.BooleanField(default=False)
2. Создайте форму для отображения элемента списка дел и редактирования его статуса. Форма может быть создана с использованием Django Forms или Django ModelForms. Например:
from django import forms class TaskForm(forms.ModelForm): class Meta: model = Task fields = ('completed',)
3. Создайте представление (view), которое будет отражать изменения статуса задачи по нажатию на кнопку. Здесь вы можете использовать Django Class Based Views или Function Based Views в зависимости от предпочтений. Например, в функциональном представлении вы можете сделать следующее:
from django.shortcuts import redirect, render def update_task_status(request, task_id): task = Task.objects.get(id=task_id) if request.method == 'POST': form = TaskForm(request.POST, instance=task) if form.is_valid(): form.save() return redirect('task_list') # Перенаправьте пользователя на список задач else: form = TaskForm(instance=task) return render(request, 'update_task_status.html', {'form': form, 'task': task})
4. Создайте шаблон (template), который будет отображать форму с кнопкой и флажком чекбокса. Например, в шаблоне "update_task_status.html" вы можете использовать следующий код:
<form method="POST"> {% csrf_token %} {{ form.as_p }} <button type="submit">Сохранить изменения</button> </form>
5. Создайте URL-маршрут, который будет связывать представление с конкретным URL-адресом. Например, в файле urls.py вашего приложения вы можете добавить следующий код:
from django.urls import path from .views import update_task_status urlpatterns = [ path('task/<int:task_id>/', update_task_status, name='update_task_status'), ]
Теперь, когда пользователь будет нажимать на кнопку с поднятым флажком чекбокса, будет вызываться представление, которое обновит значение поля "completed" в базе данных.