python - 如何在 Django 中为模型创建审批系统?
问题描述
我为几种类型的用户创建了一个系统。这些用户是分析师、主管、经理等。我的系统中有一个信用额度表 (doa)。我想当lead
类型用户更新此表中的字段时,它不应该被接受,直到manager
批准它。
因此,在批准新值之前,旧值应该是有效的manager
,当manager
批准它时,应该接受新值。我怎样才能做到这一点?
这是我的代码:
模型.py
class DoaTable(models.Model):
LIMITS = (
('Low Risk', 'Low Risk'),
('Medium Risk', 'Medium Risk'),
('Moderately High Risk', 'Moderately High Risk'),
...
)
RANKS = (
('Analyst', 'Analyst'),
('Senior Analyst', 'Senior Analyst'),
('Lead', 'Lead'),
('Manager', 'Manager'),
...
('Chief Financial Officer', 'Chief Financial Officer'),
)
rank = models.CharField(max_length=200, choices=RANKS)
risk = models.CharField(max_length=200, choices=LIMITS)
limit = models.FloatField()
...
视图.py
def update_limit(request, id):
limiting = get_object_or_404(DoaTable, id=id)
form = UpdateDoaTableForm(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.approval = False
update_form.save()
return redirect('approvals:update_limit_list')
context = {
'form': form,
'limiting_item': limiting_item,
}
return render(request, 'limitUpdate.html', context)
表格.py
class UpdateDoaTableForm(forms.ModelForm):
class Meta:
model = DoaTable
fields = ('limit',)
解决方案
创建一个表来保存更改。经理批准后,您可以保存更改。
推荐阅读
- c# - 按 LINQ 查询分组时名称“XYZ”不存在
- datetime - 如何使用 SelectableDayPredicate 将我的 DatePicker 限制为仅工作日?
- python - Keras,混洗和非混洗测试数据的不同精度和召回率
- c++ - 将可变数量的参数传递给嵌入式 python API
- javascript - 尝试使用 fetch 加载 json url 返回错误:Cross-Origin Request Blocked
- javascript - 在反应中定义条件组件的正确方法
- javascript - 按钮没有在表单内禁用
- neo4j - neo4j 慢查询性能
- android - recyclerview 上的错误 onclicklistener
- html - 在表格中,如果包含两个标签,那么可以将一个标签设为粗体吗?