Формы 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()
и напишите код выше.
Я не уверен, что это работает, но, пожалуйста, попробуйте.