【发布时间】:2018-05-06 12:19:53
【问题描述】:
我是 Django 的新手,假设我有一个类似于跟随表单的视图
class DepartmentCreateView(LoginRequiredMixin,CreateView):
form_class = DepartmentForm
template_name = os.path.join(TEMPLATE_FOLDER, "create/index.html")
def get_success_url(self):
position_id = self.kwargs.get('position_id')
return reverse_lazy('departments_list', kwargs = { 'college_id' :
college_id })
def get_initial(self):
initial = super(DepartmentCreateView, self).get_initial()
initial.update({ 'college' : self.kwargs.get('college_id'),
'code' : 1 })
return initial
我的表单看起来像
class DepartmentForm(forms.ModelForm):
class Meta:
model = Department
fields = ('name', 'college', 'code')
当我显示表单时,我正在使用get_initial() 为某些字段(学院)设置一些默认值,它按预期工作,但是当我提交表单时,如果表单无效(例如需要代码但值为 null ) 它在代码字段中按预期显示错误消息,但表单无法再次将默认值设置为大学。
我在这里犯了什么错误?
【问题讨论】:
-
我对你在这里想要什么感到有点困惑。 Web 上表单验证的正常行为是重新显示错误以及无效数据,而不是将选择重置为默认值。
-
我更新了我的问题,请检查。
-
好吧,就像我说的,你没有犯任何错误,事情就是这样运作的。如果它的工作方式不同,用户会非常困惑。
标签: django forms django-forms django-views