0

私のジャンゴアプリには、これらのモデルがあります

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インスタンスを取得/作成するために 2 つのフォームを使用します。Edit_Lessonchoice_formModelChoiceFielddropdown listcourse_name_form

これらの検証を行う必要があります。最初にコースがない場合、つまりCourse.objects.all()空のリストの場合、ドロップダウンリストにchoice_formはユーザーが選択できる項目がありません。次に、ユーザーがテキストフィールドに名前を入力するのを忘れた場合、course_name_form選択/作成されたコースインスタンスはありません。これが発生した場合、ユーザーにコース名の入力を求めるエラーメッセージを表示したいと思います。

フォームに検証コードを書くことができないと思います。error_list=[]ビューに を作成し、エラーを入れて表示する必要がありますか?これは、検証がビューで行われることを意味します。正しい方法です

お知らせ下さい

4

1 に答える 1

1

モデルフォームのclean()メソッドをオーバーライドして、より広い範囲の知識を必要とする検証を実行できます。

あなたの場合、あなたはするかもしれません

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
于 2012-09-23T14:39:10.140 に答える