@NotVova
Начинающий разработчик Django/python

Как я могу сделать чтобы при нажатии на кнопку с поднятым флажком чекбокса, менялолсь значение completed в бд?

В данный момент при нажатии на чекбокс и после на кнопку, активируются все чекбоксы и больше ничего не происходит.
Нигде не смог найти ответа на вопрос, надеюсь здесь подскажу в каком направлении думать и что я делаю не так)

Мой models.py
class Objective(models.Model):
    name = models.CharField(max_length=128)
    objective = models.CharField(max_length=256)
    value = models.ForeignKey(to=ObjectiveValue, on_delete=models.CASCADE)
    completed = models.BooleanField(default=False)

    class Meta:
        verbose_name = 'Задача'
        verbose_name_plural = 'Задачи'

    def __str__(self):
        return self.name


Мой views.py
def objectives(request):
    if request.method == "POST":
        form = ObjectiveCompleteForm(data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("objectives"))
    else:
        form = ObjectiveCompleteForm()

    objs = Objective.objects.filter(completed=False)
    value = ObjectiveValue.objects.all()

    context = {
        "title": "Задачи",
        "objs": objs,
        "form": form,
        "red": value[2],
        "orange": value[1],
        "green": value[0],
    }
    return render(request=request, template_name="app/index.html", context=context)


Мой forms.py
class ObjectiveCompleteForm(forms.ModelForm):
    checkbox = forms.CheckboxInput()

    class Meta:
        model = Objective
        fields = "__all__"
        widgets = {
            "completed": forms.CheckboxInput(attrs={"class": "checkbox"}),
        }


На всякий случай urls.py
urlpatterns = [
    path('', objectives, name='objectives'),
    path('create_obj/', create_obj, name='create_obj'),
    path('completed/', completed, name='completed'),
]


И мой HTML
<form action="{% url "objectives" %}" method="post">
    {% csrf_token %}
    {% if obj.value == red %}
        <div class="obj-point-red">
            <ul class="obj-point">
                <li><h3>Задача №{{ obj.id }}</h3></li>
                <li><p>| {{ obj.objective }}</p></li>
                <li>
                    <div class="form-check">
                        {{ form.completed }}
                    </div>
                <li><button class="submit-obj">Подтвердить выполнение</button></li>
            </ul>
        </div>
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы