svfat
@svfat
☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺

Django. get_success_url. Почему так, а не иначе?

В ModelFormMixin, который используется BaseUpdateView, в методе get_success_url() есть url = self.object.get_absolute_url()
соответственно, нам не нужно задавать success_url = reverse_lazy('блаблабла') во вьюхе, а определить get_absolute_url() в модели.
В отличие от этого, DeletionMixin, который используется BaseDeleteView, так не делает, ему нужен именно success_url.
Почему так? Почему не сделать их одинаковыми? Мне пришлось переопределять get_success_url для моего DeleteView, что бы он делал так, как я хочу.
Или я как-то неправильно работаю с success_url во вьюхе? Мне надо вычислять url по ForeignKey, делаю примерно так:
model Child(models.Model):
    parent = models.ForeignKey(Parent)
    def get_absolute_url(self):
        return reverse('parent-detail', kwargs={'pk':str(self.parent.pk)})

Как можно тоже самое сделать в success_url? Я ведь не могу там написать self.parent.pk.
  • Вопрос задан
  • 2848 просмотров
Пригласить эксперта
Ответы на вопрос 2
@deliro
Очевидно, потому что после того, как поработает DeleteView, объект удалится и нет смысла ему получать get_absolute_url удалённого объекта, да и получить его не получится.

P.S. Не знаю, какая у вас там структура, но зачем вы получаете URL родителя в ребёнке?
Ответ написан
kivsiak
@kivsiak
software engineer
Ну а что не понятного? После удаления тебе куда-то пользователя надо послать. В отсутствии модели куда именно можешь решить только ты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы