python - Django 表单不保存任何信息
问题描述
所以我一直在尝试用 django 建立一个活动管理器,但我仍然处于起步阶段。我试图测试代码是否可以简单地显示活动是否完成,但它不会改变任何东西。一切对我来说都很好,我不知道错误是在表单中,在保存表单的视图中还是在其他任何地方。我已经尝试更改表单的小部件和字段,但没有成功。
模型.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
表格.py:
from .models import Activity
class ActivityUpdateForm(ModelForm):
class Meta:
model = Activity
fields = ['is_complete']
视图.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()
并编写上面的代码。我不确定这是否有效,但请试一试。
推荐阅读
- sql - 将 SQL Server 查询转换为 Postgres 查询
- peoplesoft - 使用 Peoplesoft 数据元素生成 HTML 格式的电子邮件
- python - 如何从字符串键定义python常量
- continuous-integration - Artifactory 旧工件清理 (AQL) 并保留最新 3 个版本
- mongodb - Mongo:在 v4.4 异常中删除集合
- angular - 如何在离子 5 中添加选择所有选项到离子选择
- html - 嵌套在 JSON 响应中的未知格式的 HTML
- python - 尽管使用线程,Python Multi camera FPS 还是很慢
- javascript - 基于数据库数据构建嵌套数组
- typescript - TypeScript:为什么我不能删除这种类型断言?