У меня есть задача django со списком задач внутри, это список строк и флажков.Когда я нажимаю на флажок, он меняет значение, но не отправляет его модели через запрос POST.То, что я хочу сделать, это создать два представления, одно из которых делает значение в Checker модели равным «True», а другое - «False».
Это мои модели задач и флажков:
class Task(models.Model):
name = models.CharField(max_length=150)
description = models.CharField(max_length=1000)
state = models.CharField(max_length=15)
deadline = models.DateField(default=date.today)
workers = models.ManyToManyField(UserProfile, blank=True, related_name="task")
stickers = models.ManyToManyField(Sticker, blank=True, related_name="task")
checkers = models.ManyToManyField(Checker, blank=True, related_name="task")
files = models.ManyToManyField(File, blank=True, null=True)
class Checker(models.Model):
name = models.CharField(max_length=100)
checked = models.BooleanField(default=False)
Это представление Чтобы создать флажок:
@login_required
def create_checker(request, task_id):
if request.method == 'POST':
name = request.POST.get('Checker-Name')
userprofile = UserProfile(id=request.user.id)
checker = Checker(name=name, sender=userprofile)
checker.save()
task = Task(id=task_id)
task.checkers.add(checker.id)
return redirect('detailTaskPage', pk = task_id)
Я хочу сделать что-то подобное, когда я проверяю, а не снимать флажки:
//Check
@login_required
def check_checker(request, task_id, checker_id):
if request.method == 'POST':
checker = Checker(id=checker_id)
checker.save()
checker.checked=True
checker.save()
return redirect('detailTaskPage', pk = task_id)
//Uncheck
@login_required
def un_check_checker(request, task_id, checker_id):
if request.method == 'POST':
checker = Checker(id=checker_id)
checker.save()
checker.checked=False
checker.save()
return redirect('detailTaskPage', pk = task_id)
ЭтоURL-адреса для создания, а также изменения состояния:
path('checker/<int:task_id>/', views.create_checker, name='create-checker'),
path('check/checker/<int:task_id>/<int:checker_id>/', views.check_checker, name='check-checker'),
path('un-check/checker/<int:task_id>/<int:checker_id>/', views.un_check_checker, name='un-check-checker'),
Теперь форма с флажками (я хочу сделать что-то подобное):
<form class="checklist" method="POST">
{% for checker in Checkers %}
<div class="row">
<div class="form-group col">
<span class="checklist-reorder">
<i class="material-icons">reorder</i>
</span>
{% if checker.checked = True %}
<input type="checkbox" name="Checker-Checkbox" value= "{{ checker }}" href="{% url 'check-checker' task.id checker.id %}" checked>
{% else if checker.checked = False %}
<input type="checkbox" name="Checker-Checkbox" value= "{{ checker }}" href="{% url 'un-check-checker' task.id checker.id %}" unchecked>
{% endif %}
<style>
.checkerName {
margin-left: 10px
}
</style>
<h class='checkerName'>{{ checker.name }}</h>
</div>
<!--end of form group-->
</div>
{% endfor %}
</form>
Моя проблема в том, что ничего не происходит, когда япереключать флажки, запрос не проходит.
Это изображение флажков: