2012-09-23 54 views
0

兩種形式在我的Django應用程序,我在我的Edit_Lesson template.In一個choice_form我使用這些模型怎麼辦確認爲在Django

class Lesson(models.Model): 
    name = models.CharField(max_length=200) 
    course = models.ForeignKey(Course) 
    ... 
class Course(models.Model): 
    title = models.CharField(max_length=200) 
    ... 

我用兩種形式來獲取/創建Course實例ModelChoiceField在模板中創建dropdown list。在其他course_name_form我提供了一個使用CharField的用戶可以輸入課程名稱的文本框。

我需要對這些進行驗證。如果最初沒有課程,即Course.objects.all()是一個空列表,choice_form的下拉列表中將沒有任何項目供用戶選擇。然後,如果用戶忘記了在course_name_form的文本框中輸入一個名稱,那裏不會選擇/創建任何課程實例。發生這種情況時,我想向用戶顯示錯誤消息,要求他輸入課程名稱。

我想,我將無法在窗體中編寫驗證代碼。我應該在我的視圖中創建一個error_list=[]並將錯誤放入並顯示它嗎?這意味着驗證發生在視圖中。我不知道這是正確的方式

請指教

回答

1

您可以覆蓋的模型形式的清潔()方法執行需要一個範圍更廣的知識驗證。

在你的情況,你可能會做

def clean(self): 
    if not Course.objects.count() and not self.cleaned_data['course_name']: 
     raise ValidationError(u"Some sensible message") 
    return self.cleaned_data