python - form.is_valid(): -- 使用 ModelForm 而不是 form- 用户特定数据 - Django
问题描述
所以我在我的 Django 网站中集成了用户特定的数据,并且我已经开始使用它了。现在它正在开发一个名为 ToDoList 的模型,在我的 forms.py 文件中有一个名为“name”的字段和一个 (form.Form)。它可以工作,但现在我需要更改它以使用名为 Sheet_Building 的不同模型,该模型具有许多字段,更重要的是一个名为 SheetForm_Building 的新表单,它是一个 (form.ModelForm)。问题:我的views.py 文件中的视图无法支持form.ModelForm 而不是form.Form。我将在下面链接我的表单和 HTML,但除了我尝试将新的 ModelForm 集成到视图中之外,它都可以正常工作。
视图.py
def adddata_building(response):
if response.method == "POST":
form = CreateNewList(response.POST)
if form.is_valid():
n = form.cleaned_data["name"]
t = ToDoList(name=n)
t.save()
response.user.todolist.add(t)
return HttpResponseRedirect("/front_page/sheets/list_data_building/")
else:
form = CreateNewList()
return render(response, 'sheets/add_data/add_data_building.html', {'form': form})
模型.py
class ToDoList(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="todolist", null=True)
name = models.CharField(max_length=200)
def __str__(self):
return self.name
forms.py 中的当前表格
class CreateNewList(forms.Form):
name = forms.CharField(label="Name ", max_length=300)
需要在 forms.py 中使用的表格
class CreateNewList(forms.ModelForm):
class Meta:
model = ToDoList
fields = '__all__'
创建 HTML
<h3>Create a New To Do List</h3>
<br>
<form method="post" action="" class="form-group">
{% csrf_token %}
<div class="input-group mb-3">
<div class="input-group-prepend">
<button name="save" type="submit" class="btn btn-success">Create</button>
</div>
{{form.name}}
</div>
</form>
查看 HTML
{% for td in user.todolist.all %}
<p><a href="/{{td.id}}"><h3>{{td.name}}</h3></a></p>
{% endfor %}
解决方案
推荐阅读
- javascript - Angular 无法读取 null 的属性“countryId”、stateId、cityName 等
- php - 使用 sqlsrv php 存储过程
- android - 安卓 ExoPlayer。负载控制。如何确定 onTrackSelected() 中正在加载哪个轨道?
- typescript - 从 JSON 动态加载组件并在 HTML 中呈现
- r - 在 RShiny 中呈现动态表的问题
- java - Apache poi“下拉”格式
- logging - Tomcat 不在标准输出中记录
- python - 计算算法的时间复杂度
- javascript - 将 PDF 上传到外部 API 会导致 PDF 内部出现空白页
- html - Bootstrap 导航栏,为什么我的导航栏没有正确展开