В моем CreateView
классе я переопределение функции form_valid()
следующим образом:Джанго: метод ОЦК form_valid() не называется
class ActionCreateView(CreateView):
model = Action
form_class = ActionCreateForm
success_url = reverse_lazy('profile')
def get_initial(self):
initial = super(ActionCreateView, self).get_initial()
initial['request'] = self.request
return initial
def form_valid(self, form):
form.instance.user = self.request.user
print 'user: %s'%form.instance.user
try:
da = form.cleaned_data['deadline_date']
ti = datetime.now()
form.instance.deadline = datetime(da.year, da.month, da.day, ti.hour, ti.minute, ti.second)
except Exception:
raise Http404
return super(ActionCreateView, self).form_valid(form)
Но, как выясняется, метод form_valid
никогда не вызывается, потому что user
никогда не печатается , Интересно, что вызывается метод clean
в form.py.
Не отображается ошибка (поэтому у меня нет следа для отображения). Пользователь снова перенаправляется в форму. В чем причина такого поведения? Я работаю на Django 1.5 и Python 2.7.
Вы попробовали инструкцию печати в методе 'form_invalid', и используете ли вы' POST'? –
создание метода 'form_invalid' показало проблему. Спасибо за предложение. Если вы напишете свой комментарий в качестве ответа, я с удовольствием соглашусь и проголосую за него. Спасибо. – neurix
Я столкнулся с подобной проблемой, и 'form_invalid' тоже помог мне. Я понял, что форма создавала ошибку, в которой я не размещался в шаблоне, поэтому она не отображалась. Это похоже на то, с чем вы столкнулись @neurix? –