Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django def form_对两种形式有效_Python_Django_Forms - Fatal编程技术网

Python Django def form_对两种形式有效

Python Django def form_对两种形式有效,python,django,forms,Python,Django,Forms,我想在同一视图中使用两种形式。这是一个受限制的频道。第一种形式是聊天,第二种形式启动对话(默认值为false的布尔fiels)。所有表单共享相同的成功url 你有什么想法吗?我从Django开始:)谢谢你的帮助 以下是我的看法: @method_decorator(login_required(login_url='/cooker/login'),name="dispatch") class CheckoutDetail(generic.DetailView, FormMix

我想在同一视图中使用两种形式。这是一个受限制的频道。第一种形式是聊天,第二种形式启动对话(默认值为false的布尔fiels)。所有表单共享相同的成功url

你有什么想法吗?我从Django开始:)谢谢你的帮助

以下是我的看法:

@method_decorator(login_required(login_url='/cooker/login'),name="dispatch")
class CheckoutDetail(generic.DetailView, FormMixin):
    model = Sugargroup
    context_object_name = 'sugargroup'
    template_name = 'checkout_detail.html'
    form_class = CreateSugarChatForm
    validation_form_class = LaunchSugargroupForm # that is what I would like to add (models: boolean field with false default = user activate channel in changing it by true thanks to the forms
    
    def get_context_data(self, **kwargs):
        context = super(CheckoutDetail, self).get_context_data(**kwargs)
        context['form'] = self.get_form()
        return context

    def form_valid(self, form):
        if form.is_valid():
            form.instance.sugargroup = self.object
            form.instance.user = self.request.user
            form.save()
            return super(CheckoutDetail, self).form_valid(form)
        else:
            return super(CheckoutDetail, self).form_invalid(form)
     
    ### I don't know how I can implement this into: def form_valid
    def form_valid(self, validation_form):
        validation_form.instance.user = self.request.user
        validation_form.save()
        return super(CheckoutDetail, self).form_valid(validation_form)
   ######        

    def post(self,*args,**kwargs):
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_valid(form)

    def get_success_url(self):
        return reverse('checkout:checkout_detail',kwargs={"slug":self.object.slug})
    ...

您可以通过添加一个名称来标识提交表单的提交按钮

因此,您的标记看起来与


{{form_1}}
{{form_2}}
然后,您可以通过
post
方法确定提交了哪个表单


def post(自我,*args,**kwargs):
如果request.POST中有“form_1”:
流程表1()
request.POST中的elif“form_2”:
流程表2()