Подтвердить что ты не робот

Django createview как получить созданный объект

У меня две конкатенированные формы. В основном пользователь заполняет первую форму, а затем перенаправляется во вторую, которая добавляет значение к данным первой формы. НАПРИМЕР. У меня есть форма Movie (первая форма), а затем я перенаправлен на форму (актер), которая добавляет актера в фильм.

в моем случае Movie = Chiamata и Actor = Offerta (я сохраняю название italians для того, что мне нужно: D)

в порядке.

это мои URL-адреса в urls.py

url(r'^chiamata/$', ChiamataCreate.as_view(),name='chiamata_create'),
url(r'^chimamata/(?P<pk>\d+)/offerta$', OffertaCreate.as_view(), name='offerta_create'),

Я создаю это представление

class ChiamataCreate(CreateView):
    template_name = 'chiamata_form.html'
    form_class = ChiamataForm
    success_url=reverse_lazy('offerta_create',args=(??,))

теперь проблема в том, как я могу получить PK объекта, созданного chiamataForm. Мне нужно, чтобы добавить его в URL-адрес offerta_create.

4b9b3361

Ответ 1

Возможно, вы могли бы использовать метод get_success_url() (см. ссылку)

В этом случае это будет что-то вроде:

def get_success_url(self):
    return reverse('offerta_create',args=(self.object.id,))

Ответ 2

Пожалуйста, см. принятый ответ Почему у self.object в CreateView нет идентификатора после сохранения в базе данных? - как только я удалил "id" поля из моих моделей, и пусть Django по умолчанию имеет свой собственный идентификатор AutoField для каждой модели, как рекомендовано в этом ответе, self.object.id отлично работал в моем CreateView.