2014-01-08 16 views
0

此應用將項目分配給員工。每個任務都有一個百分比努力字段。在完美的世界裏,沒有員工的努力會超過100%,但這是一個不完美的世界。該代碼捕獲的努力是> 100%,但引發異常。然而,我想要的是一個警告,我花了幾天的時間試圖在文檔中找到一些東西。Django在新記錄中管理內嵌警告

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

Django的哪個版本? –

+0

1.5 - 看起來像我需要更多的字符或這不會發布。版本1.5。 –

回答

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") 
+0

我試過了。儘管如此,我不得不將保存移到底部。你有它會導致下面的代碼被跳過。只保存formset並離開功能。當代碼執行到底部時,消息被添加但不顯示。 –

+0

您是否按照文檔安裝了中間件等? https://docs.djangoproject.com/en/1.6/ref/contrib/messages/#enabling-messages – sk1p

+0

賓果,sk1p。我沒有模板設置。只是爲了點出我的名字並在此之上交叉,我還必須重寫默認的消息級別以獲得警告和錯誤。 –