Шаблоны Django - установите и снимите флажок - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть задача 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>

Моя проблема в том, что ничего не происходит, когда япереключать флажки, запрос не проходит.

Это изображение флажков:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...