A CreateView
в основном используется дважды в процессе создания:
- один раз для создания формы для создания объекта, и в этом случае нет созданного объектаеще;и
- один раз для POST, который будет создавать объект.
В двух случаях вызывается render_to_response
:
- , когда мы выполняемПОЛУЧИТЕ, и таким образом создайте форму, в которой нет никакого объекта (
self.object = None
, так что это означает, что не добавлен к данным контекста);и - , когда мы выполняем POST, и форма оказывается недействительной , в этом случае форма обычно перерисовывается с ошибкой.
Youможно использовать self.object
для доступа к объекту, который создает, но, как уже было сказано, это скорее бессмысленный здесь для доступа к нему, так как render_to_response
, используется для визуализации формы, если она еще не заполнена или заполнена с ошибками.
Обычно указывается шаблон, который отображает форму, например:
class CreateVote(LoginRequiredMixin, CreateView):
form_class = VoteForm
template_name = <b>'app/some_template.html'</b>
def get_initial(self):
initial = super().get_initial()
initial['user'] = self.request.user.id
initial['movie'] = self.kwargs['movie_id']
return initial
def get_success_url(self):
movie_id = self.object.moive.id
return reverse('core:MovieDetail', kwargs = {'pk': movie_id })
# <i>no</i> render_to_response override