Столкнувшись с проблемами перенаправления пользователя с помощью сигнала django post_save - PullRequest
0 голосов
/ 27 июня 2019

Когда пользователь создает новую тему в чате, я хочу автоматически перенаправить его в эту тему.Но сталкиваются с проблемами

пример моих моделей

class Thread(models.Model):
    name=models.CharField()
    creator=models.ForeignKey(User)
class Chat(models.Model):
    thread=models.ForeignKey(Thread)
    message=models.TextField()

Пользователь создает поток и должен быть перенаправлен в созданный поток ('app: chat', pk), отображающий форму чата и имя потока.

Я пытался использовать сигнал django post_save для перенаправления пользователя после создания потока

def redirect_user(sender,instance,**kwargs)
    pk=instance.id
    url=('app:chat',pk)
    post_save.connect(redirect_user,sender=Thread)

Ну, это не работает.Пожалуйста, помогите с хорошим подходом к решению этой проблемы.

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Если вы используете общие представления на основе классов Django, вы можете довольно легко получить эту функцию

. Для этого следует использовать CreateView, а затем переопределить метод get_success_url, чтобы перенаправитьпользователь. Классные представления на основе классов - отличный веб-сайт для изучения всех вариантов общих представлений

class ThreadCreateView(CreateView):

    model = Thread

    def get_success_url(self):
        return reverse('app:chat', args=[self.object.pk])
0 голосов
/ 27 июня 2019

Вы должны делать это, по вашему мнению, когда ваша форма отображается в афа. Если форма действительна, то идентификатор экземпляра модели должен быть доступен экземпляру формы, и вы можете позвонить return redirect("chat", args=(new_id,)), где "chat" - это обратное имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...