在Django表单中保存并继续

时间:2019-06-24 14:37:09

标签: django django-forms

我创建了一个django表单,目前我只能保存POST。想在我的模板和视图功能中添加保存并添加另一个按钮。有没有人找到解决方案。

if request.method == "POST": 
    form = StktxnsForm(request.POST ) 
    if form.is_valid(): 
        new_txns = form.save(commit=False) 
        new_txns.created_by = request.user 
        new_txns.save() 
        return redirect('pending_transactions') 
else: 
    form = StktxnsForm() 
return render(request,'new_transaction.html', {'form': form})

2 个答案:

答案 0 :(得分:0)

这是做到这一点的一种方法。

在模板上:

<button type="submit" name="save_add" value="True">Save & Add another</button>

您认为:

if form.is_valid(): 
    new_txns = form.save(commit=False) 
    new_txns.created_by = request.user 
    new_txns.save() 
    if request.POST.get('save_add'):
        return redirect('create_transaction')
    return redirect('pending_transactions') 

答案 1 :(得分:0)

我在基于类的视图中是这样使用的(香草方法)

class PackageCreateView(View):

    def get(self,request,*args,**kwargs):
        return render(request,'package/create_package.html')
    
    def post(self,request,*args,**kwargs):
        if request.user.is_authenticated:
            if request.method == 'POST':
                data = request.POST
                name = data.get('name')
                detail = data.get('des')
                price = data.get('price')
                fname = Package.objects.all().filter(name=name)
                if fname:
                    messages.info (request,'sorry name already exits')
                    return redirect ('create_package')
                elif request.POST.get ('continue') :
                    pac = Package(name=name, detail=detail, price=price)
                    pac.save()
                    return redirect('create_package')
                else:
                    pac = Package(name=name, detail=detail, price=price)
                    pac.save()
                    return redirect('packagelist') 
            else:
                return redirect ('create_package')    
        else:
            return redirect('login')