我想使用CreateView创建用户并在链接到User模型的Profile中设置一些其他值。 那些价值是前。城市。此城市值来自另一个模型(城市)ForeignKeyed到区域模型ForeignKeyed到国家/ 模型..等等。
因此,要选择正确的城市,用户必须首先选择正确的国家和地区。 我的解决方案是:在视图的开头只有国家组合框选择器:当用户选择国家时,我通过javascript提交表单并添加区域组合框选择器。然后,当用户设置区域组合框时,我将添加城市 ...
我决定提交表单,因为每次用户使用GET和url参数更改某些组合框时,我都不想丢失页面中的其他值。但是,在用户单击“提交”按钮之前,我不想验证或显示任何错误。
所以我有这个
$('#id_of_the_countries_combobox').change(
function () {
$('#id_nocommit').prop('checked', true);
$('#mainform').submit();
});
我想检查我的视图是否存在 nocommit 并且只是跳过验证:
class CandidatiCreate(CreateView):
def post(self, request, *args, **kwargs):
post = request.POST.copy()
if 'nocommit' in post:
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
♯at this point form is already validated and full of errors
return self.render_to_response(
self.get_context_data(form=form))
self.object = None
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
问题:表单始终经过验证,视图显示错误。
我该如何避免?或者:这是正确的方法吗?