django - 更新表单时Formset显示无效
问题描述
任何人都可以帮助我为什么我的表单集在尝试更新表单时显示无效。它在创建表单时完美运行。普通表单正在编辑,但表单集不是。
`def content_edit_view(request, id): course = get_object_or_404(Course, id=id) LectureFormset = modelformset_factory(Lecture, fields=('lecture_title', 'lecture_content', 'youtube_url'), extra=0)
if course.user != request.user:
raise Http404()
if request.method == 'POST':
content_edit_form = ContentEditForm(request.POST or None, request.FILES or None, instance=course)
formset = LectureFormset(request.POST or None, request.FILES or None)
if content_edit_form.is_valid():
content_edit_form.save()
data = Lecture.objects.filter(course=course)
# give index of the item for a formset item strting form 0 and (f)the item itself
if formset.is_valid():
for index, f in enumerate(formset):
if f.cleaned_data:
if f.cleaned_data['id'] is None:
video = Lecture(course=course, lecture_title=f.cleaned_data.get('lecture_title'), lecture_content=f.cleaned_data.get('lecture_content'), youtube_url=f.cleaned_data.get('youtube_url'))
video.save()
else:
video = Lecture(course=course, lecture_title=f.cleaned_data.get('lecture_title'), lecture_content=f.cleaned_data.get('lecture_content'), youtube_url=f.cleaned_data.get('youtube_url'))
d = Lecture.objects.get(id=data[index].id) #get slide id which was uploaded
d.lecture_title = video.lecture_title # changing the database tiitle with new title
d.lecture_content = video.lecture_content #changing the database content with new content
d.youtube_url = video.youtube_url # changing the database content with new content
d.save()
return redirect('teacher-profile')
else:
print('formset is invalid')
else:
print("form is invalid")
else:
content_edit_form = ContentEditForm(instance=course)
formset = LectureFormset(queryset=Lecture.objects.filter(course=course))
context = {
'contentForm': content_edit_form,
'course': course,
'formset': formset,
}
return render(request, 'apps/contentEdit.html', context)`
解决方案
推荐阅读
- php - 如何将数组形式更改为 [0] => ... [1] =>
- spring-cloud - 如何向库中定义的 Spring Cloud OpenFeign 客户端添加特定配置?
- ios - HStack 中的 SwiftUI 元素具有不同的高度
- javascript - 如何使用来自 Axios 请求的数据填充 Vue 中的数组
- java - 如何让 Azure Pipelines 使用 Gradle 识别 JavaFX 依赖项
- python - 修改数组的值,其中相同大小的列表包含另一个列表的值
- ios - Swift iOS 内存使用量在运行时增加
- mongodb - 使用 MongoDB 接口的 Azure CosmosDB 地理空间查询行为异常
- android - 按名称访问我在 google play 上的应用程序
- c# - 从关联数组c#中检索值