Я столкнулся с проблемой при создании объекта через CreateView (используя модельную форму).
Сначала код:
Вид:
class KlientCreateView(CreateView):
form_class = KlientCreateForm
model = Klient
template_name = 'forms/klient_pridat.html'
success_url = '/thanks'
URLКонф.:
url(r'^klient_pridat/$', KlientCreateView.as_view(), name='url_klient_pridat'),
Шаблон:
{% block content %}
<form action="" method="post">{% csrf_token %}
<h3>formular</h3>
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock %}
Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py" in view
47. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
68. return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/edit.py" in post
172. return super(BaseCreateView, self).post(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/edit.py" in post
138. return self.form_valid(form)
File "/usr/lib/python2.7/site-packages/django/views/generic/edit.py" in form_valid
113. return super(ModelFormMixin, self).form_valid(form)
File "/usr/lib/python2.7/site-packages/django/views/generic/edit.py" in form_valid
60. return HttpResponseRedirect(self.get_success_url())
File "/usr/lib/python2.7/site-packages/django/views/generic/edit.py" in get_success_url
101. url = self.success_url % self.object.__dict__
Exception Type: AttributeError at /klient_pridat/
Exception Value: 'bool' object has no attribute '__dict__'
После заполнения формы и нажатия кнопки «Отправить» я получаю страницу с ошибкой с
'bool' object has no attribute '__dict__'
Из трассировки и выполнения поиска я предполагаю, что это вызвано методом get_success_url() (вероятно, неправильным «действием» в форме. Я тоже экспериментировал с этим:
<form action="{% url url_klient_pridat %}" method="post">{% csrf_token %}
OR <form action="" method="post">{% csrf_token %}
OR <form action="/klient_pridat/" method="post">{% csrf_token %}
Есть идеи?