我为我的项目创建了一个审批系统。我有几个用户。这些用户是分析师、主管、经理等。我的系统中有一个信用额度表(DoaTable
)。我想知道lead
类型的用户更新此表中的字段时,在经理批准之前不应接受该字段
因此,在manager
批准新值之前,旧值应该是有效的,当经理批准时,新值应该被接受
我创建了一个新模型。当潜在客户想要更新此表时,数据将保存另一个名为DoaTableBeforeApproval
的模型(表)。这样,当经理批准lead更新的表时,DoaTable应该等于new table(DOATABLEBEFOREPOREPOREPOREProval)。如何为该等式创建循环
型号.py
LIMITS = (
('Low Risk', 'Low Risk'),
('Medium Risk', 'Medium Risk'),
..'),
('Strict Credit Check', 'Strict Credit Check'),
('No Credit Check', 'No Credit Check'),
)
RANKS = (
('Analyst', 'Analyst'),
('Senior Analyst', 'Senior Analyst'),
('Lead', 'Lead'),
('Manager', 'Manager'),
...
)
class DoaTable(models.Model):
rank = models.CharField(max_length=200, choices=RANKS)
risk = models.CharField(max_length=200, choices=LIMITS)
limit = models.FloatField()
comp_name = models.ForeignKey(CompanyProfile, on_delete=models.CASCADE, null=True)
class DoaTableBeforeApproval(models.Model):
rank = models.CharField(max_length=200, choices=RANKS)
risk = models.CharField(max_length=200, choices=LIMITS)
limit = models.FloatField()
comp_name = models.ForeignKey(CompanyProfile, on_delete=models.CASCADE, null=True)
视图.py
#这是给线索的
def update_limit_before_approval(request, id):
limiting = get_object_or_404(DoaTableBeforeApproval, id=id)
form = UpdateDoaTableFormForApproval(request.POST or None, request.FILES or None, instance=limiting)
limiting_item = DoaTable.objects.filter(id=id)
if form.is_valid():
update_form = form.save(commit=False)
update_form.save()
return redirect('approvals:update_limit_list')
context = {
'form': form,
'limiting_item': limiting_item,
}
return render(request, 'limitUpdate.html', context)
#这是给经理们的
def update_limit_by_manager(request):
limit = get_object_or_404(DoaApprove)
current_user = request.user
userP = UserProfile.objects.get_or_create(username=current_user)
form = DoaTableApproval(request.POST or None, request.FILES or None, instance=limit)
limiting_item = DoaTable.objects.filter(comp_name=userP[0].company)
doa = DoaTable.objects.filter(comp_name=userP[0].company)
doa_new = DoaTableBeforeApproval.objects.filter(comp_name=userP[0].company)
if form.is_valid():
if form.approved:
*******************
**some loops here**
*for doa = doa_new*
*******************
form.save()
return redirect('approvals:update_limit_list')
context = {
'form': form,
'limiting_item': limiting_item
}
return render(request, 'limitApprove.html', context)
forms.py
class DoaTableApproval(forms.ModelForm):
approved = forms.TypedChoiceField(
coerce=lambda x: x == 'True',
choices=((False, 'Disapproved, review again'), (True, 'I confirm')),
widget=forms.RadioSelect
)
class Meta:
model = DoaApprove
fields = ('approved',)
您可以逐个指定所有值,如下所示:
或者您可以使用this answer
相关问题 更多 >
编程相关推荐