我正在尝试在一个页面上有两个表单。我使用的是基于类的视图。你知道吗
class TaskDetailView(FormMixin, generic.DetailView):
model = Task
template_name="tasks/detail.html"
form_class = NoteForm
form_class2 = DurationForm
def get_context_data(self, **kwargs):
context = super(TaskDetailView, self).get_context_data(**kwargs)
context['note_form'] = self.get_form()
context['notes'] = Note.objects.filter(task__slug=self.kwargs['slug'])
context['duration_form'] = self.form_class2()
context['duration'] = Duration.objects.all()
return context
def get_success_url(self):
return reverse('task_detail', kwargs={'slug': self.kwargs['slug']})
def post(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return HttpResponseForbidden
self.object = self.get_object()
form = self.get_form()
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
def form_valid(self, form):
current_task = get_object_or_404(Task, slug=self.kwargs['slug'])
self.object = form.save(commit=False)
self.object.task = current_task
self.object.save()
return HttpResponse(self.get_success_url())
我目前的状态是,我可以显示所有的表格,只保存笔记表格。我无法保存持续时间窗体,尽管有一个200状态的帖子,但数据没有保存到数据库中。你知道吗
我认为我的错误是,我没有验证它,但我真的不知道如何验证,而且在Django没有太多关于CBV的多种形式的信息。你知道吗
我非常感谢您的指导和帮助。你知道吗
谢谢
在一个页面上创建多个表单的一种非常简单的方法是定义一些隐藏参数来区分POST操作,例如:
在CBV post方法中,您可以:
您的
post
方法对第二种形式没有任何作用。您需要实例化它,并像处理第一个一样检查它的有效性。你知道吗相关问题 更多 >
编程相关推荐