2011-05-08 91 views
2

我正在使用Django 1.1我想對模型執行驗證;具體來說,檢查FileField中文件的擴展名。我可以做延期檢查,但我不知道如何在管理面板中顯示錯誤,如果它是錯誤的擴展名;類似於您忘記填寫必填字段時。Django中的模型驗證1.1

我試過2種方法來做到這一點。

  • 根據文件字段創建一個自定義字段,並執行驗證其clean()方法。然後我可以提出一個ValidationError。這在Django 1.2中可用,但不在1.1中。

  • 覆蓋模型的save()方法。我無法在這裏拋出一個ValidationError,因爲它只是顯示一個普通的錯誤頁面(普通用戶不會看到),而不是管理員中有用的消息。

有什麼辦法可以做我想在Django 1.1中做什麼?

+1

請儘可能升級:) – 2011-05-08 12:55:21

回答

3

Django 1.1沒有模型驗證。唯一的另一個做驗證的地方是在窗體上 - 你所要做的就是用你的乾淨方法定義一個自定義模型,然後告訴管理員使用它。

class MyModelForm(forms.ModelForm): 
    def clean_myfilefield(self): 
     ... do validation or raise forms.ValidationError('message') 

class MyModelAdmin(admin.ModelAdmin): 
    model = MyModel 
    form = MyForm 

請注意,只是檢查擴展名是不夠的,以確保您獲得您期望的文件類型。

+0

我仍然在做錯事。已經定義了一個'MyModel'管理員,因此我添加了額外的代碼。然後我把我的乾淨的方法放在MyModelForm類中。但是,我在管理面板中看不到該模型;它以某種方式不可見。 – Dries 2011-05-08 15:03:45