【发布时间】:2022-01-16 13:54:38
【问题描述】:
目前,我有一个基本上关闭潜在客户的视图,这意味着它只是将信息从一个表(潜在客户)复制到另一个(交易),现在我真正想做的是在单击关闭后,用户被重定向到另一个页面,用户可以在其中更新一些条目(销售预测),我有一个更新潜在客户的视图,所以我认为我可以执行以下操作:
@login_required
def close_lead(request):
id = request.GET.get('project_id', '')
keys = Leads.objects.select_related().get(project_id=id)
form_dict = {'project_id': keys.project_id,
'agent': keys.agent,
'client': keys.point_of_contact,
'company': keys.company,
'service': keys.services,
'licenses': keys.expected_licenses,
'country_d': keys.country
}
deal_form = NewDealForm(request.POST or None,initial=form_dict)
if request.method == 'POST':
if deal_form.is_valid():
deal_form.save()
obj = Leads.objects.get(project_id=id)
obj.status = "Closed"
obj.save(update_fields=['status'])
## Changing the Forecast Table Entry
forecast = LeadEntry.objects.filter(lead_id=id)
for i in forecast:
m = i
m.stage = "Deal"
m.save(update_fields=['stage'])
messages.success(request, 'You have successfully updated the status from open to Close')
update_forecast(request,id)
else:
messages.error(request, 'Error updating your Form')
return render(request,
"account/close_lead.html",
{'form': deal_form})
此视图提供了我要在关闭潜在客户后更新的表单集
@login_required
def update_forecast(request,lead_id):
# Gets the lead queryset
lead = get_object_or_404(Leads,pk=lead_id)
#Create an inline formset using Leads the parent model and LeadEntry the child model
FormSet = inlineformset_factory(Leads,LeadEntry,form=LeadUpdateForm,extra=0)
if request.method == "POST":
formset = FormSet(request.POST,instance=lead)
if formset.is_valid():
formset.save()
return redirect('forecast_lead_update',lead_id=lead.project_id)
else:
formset = FormSet(instance=lead)
context = {
'formset':formset
}
return render(request,"account/leadentry_update.html",context)
如您所见,我在验证表单中的数据后调用了此函数 update_forecast(request,id),但是,在单击提交后,我希望以某种方式重定向到该函数上指定的 HTML 页面,第一个视图中的表单经过验证,但没有任何反应,所以我的函数不呈现 HTML 页面
我的问题是如何在我的视图中利用现有函数?显然,我会想象遵循 DRY 原则,您可以在 Django 中做到这一点,那么我做错了什么?,我如何在另一个函数中调用现有函数在视图中起作用?
【问题讨论】:
标签: django django-views