Формы Django не сохраняют никакой информации

Итак, я пытался создать менеджер действий с помощью django и все еще нахожусь на нуле. Я пытался проверить, может ли код просто показать, выполнена ли деятельность или нет, но это ничего не меняет. Все выглядит хорошо, и я не знаю, где ошибка - в форме, в представлении, которое сохраняет форму, или во всем остальном. Я уже пытался изменить виджет и поля формы и не преуспел в этом.

models.py:

from django.db import models
from django.contrib.auth.models import User


class Activity(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=30)
    is_complete = models.BooleanField()

    def __str__(self):
        return self.title

forms.py:

from .models import Activity


class ActivityUpdateForm(ModelForm):
    class Meta:
        model = Activity
        fields = ['is_complete']

views.py:

from .models import Activity
from .forms import ActivityUpdateForm


def home(request):
    acts = Activity.objects.all()

    if request.method == 'POST':
        form = ActivityUpdateForm(request.POST, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('home')
    else:
        form = ActivityUpdateForm()
    
    context = {
        'acts': acts,
        'form': form,
    }

    return render(request, 'diary/home.html', context)

Шаблон:

{% for act in acts %}
    <form method="POST">
        {% csrf_token %}
        <p>{{ act.title }}</p>
        <p>Is complete: {{ act.is_complete }}</p>
        {{ form }}
        <p>{{ act.author }}</p>
        <button type="submit">Submit</button>
    </form>
{% endfor %}```

Это не элегантно, но вам может понадобиться сделать следующее:

data = Activity.objects.get(author=request.user)
data.is_complete = form.cleaned_data["is_complete"]
data.save()

Пожалуйста, удалите form.save() и напишите код выше. Я не уверен, что это работает, но, пожалуйста, попробуйте.

Вернуться на верх