Django管理员在新记录上的内联警告

时间:2014-01-08 15:51:08

标签: django django-admin

此应用程序将项目分配给员工。每个作业都有一个百分比努力字段。在完美的世界中,员工的努力不会超过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')

1 个答案:

答案 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")