我的问题基于该帖子How to pass data between django views。我正在尝试做类似的事情,即使用在视图1中输入的数据到视图2中。
但是,挑战在于使用表单集,我需要访问多行数据输入,而不仅仅是访问值。我不知道该怎么实现
这是我到目前为止的内容: 视图1:
def New_Sales(request):
#context = {}
form = modelformset_factory(historical_recent_data, fields=('Id', 'Date','Quantity', 'NetAmount', 'customer_name'))
if request.method == 'GET':
formset = form(queryset= historical_recent_data.objects.none())
#blank_form = formset.empty_form
elif request.method == 'POST':
formset = form(request.POST)
#blank_form = formset.empty_form
if formset.is_valid():
request.session['sale'] = request.POST['sale']
for check_form in formset:
check_form.save()
quantity = check_form.cleaned_data.get('Quantity')
id = check_form.cleaned_data.get('Id')
update = replenishment.objects.filter(Id = id).update(StockOnHand = F('StockOnHand') - quantity)
update2 = Item2.objects.filter(reference = id).update(stock_reel = F('stock_reel') - quantity)
return redirect('/dash22.html')
return render(request, 'new_sale.html', {'formset':formset})
并查看2:
def invoice_view(request):
request = request.session.get('sale'))
#... i need to get each row of the formset from the above view
#and I am stuck!!
我希望有人能找到解决方案,但我在Django文档中找不到任何有关此的信息。
答案 0 :(得分:0)
好吧,我不知道我对您的问题是否理解很好,但是,我会尽力回答您。 您可以通过2种不同的方式来实现。一种是在前端发送带有帖子的值(HTML表单或AJAX POST)。如果您想从后端进行操作,则可以向该方法添加更多的args并传递值(或整个表单集),例如:
def invoice_view(request, val1=None, val2=None):
print(val1)
request = request.session.get('sale'))
然后您可以从另一个视图调用它,就像普通的函数一样:
invoice_view(request, "asd", "asd2")