0

在我的 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实例。在一个中,我使用 a在模板中创建一个。在另一个中,我使用 CharField 提供一个文本字段,用户可以在其中输入课程名称。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 回答