18
我有一個非常簡單的Django應用程序,用於記錄給我的同事的演講。由於它非常基本,我使用Django管理員本身。這裏是我的models.py:在Django中自定義驗證admin
#models.py
from django.db import models
class Lecture(models.Model):
topic = models.CharField(max_length=100)
speaker = models.CharField(max_length=100)
start_date = models.DateField()
end_date = models.DateField()
我需要確保沒有人進入的管理形式結束日期開始日期,所以我在管理讀取自定義驗證Django文檔並實現在下面我的admin.py:
#admin.py
from models import Lecture
from django.contrib import admin
from django import forms
class LectureForm(forms.ModelForm):
class Meta:
model = Lecture
def clean(self):
start_date = self.cleaned_data.get('start_date')
end_date = self.cleaned_data.get('end_date')
if start_date > end_date:
raise forms.ValidationError("Dates are incorrect")
return self.cleaned_data
class LectureAdmin(admin.ModelAdmin):
form = LectureForm
list_display = ('topic', 'speaker', 'start_date', 'end_date')
admin.site.register(Lecture, LectureAdmin)
然而,這有沒有影響任何對我的管理員,我能救講座,其中起始日期爲END_DATE後的圖像中看到:
我在做什麼錯??
工作!! ..我幾乎花了2個小時重新閱讀文檔,以獲得修復它!..我有一個更多的懷疑..只有當我創建一個新的條目時驗證錯誤拋出。對於現有的,他們仍然在那裏......我假設只有當模型被保存時才調用clean()方法。我如何確保每次頁面加載時都調用它? – Amistad
@Amistad只有當表單被提交時,纔會調用'clean'方法,而不是「保存模型時」(如果這就是你想要的模型的驗證:https://docs.djangoproject.com/en /1.7/ref/models/instances/#validating-objects)...每次頁面加載時,仍然不會驗證模型實例,但爲什麼你會想要這樣的「功能」? –
嗯..現在我想起來了,我對模型的所有更改都只通過管理員通過form ..因此驗證檢查應該足夠了..謝謝.. – Amistad