此应用程序将项目分配给员工。每个作业都有一个百分比努力字段。在完美的世界中,员工的努力不会超过100%,但这是一个不完美的世界。该代码捕获的努力是> 100%,但抛出一个例外。然而,我想要的是一个警告,我花了几天时间试图在文档中找到一些东西。
class EmployeeAssignmentInLineFormSet(BaseInlineFormSet):
def clean(self):
super(EmployeeAssignmentInLineFormSet, self).clean()
effort = 0.0
for assignment in self.cleaned_data:
if not assignment['DELETE']:
effort += assignment['effort']
if effort > self.instance.fte * 100:
raise ValidationError('Assignments exceed FTE equivalent')
答案 0 :(得分:1)
您可以使用messages
应用,但要添加消息,您需要访问request
对象。因此,也许您可以覆盖save_formset
上的ModelAdmin
方法,例如:
from django.contrib import messages
class YourAdmin(admin.ModelAdmin):
inlines = [YourInline]
def save_formset(self, request, form, formset, change):
# TODO: check if this is the formset for the right inline
formset.save()
effort = 0.0
for assignment in formset.cleaned_data:
if not assignment['DELETE']:
effort += assignment['effort']
if effort > form.instance.fte * 100:
messages.warning(request, "Assignments exceed FTE equivalent")