当用户创建新的聊天线程时,我想自动将其重定向到该线程。但是面临问题
以我的模型为例
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)
这不起作用。请提供帮助解决此问题的好方法。
答案 0 :(得分:0)
您应该在视图被自动显示的视图中执行此操作。如果该表单有效,则该模型实例应该可以访问模型实例的ID,并且您可以调用return redirect("chat", args=(new_id,))
,其中“聊天”是反向名称。
答案 1 :(得分:0)
如果您使用基于Django的通用类的视图,则可以轻松获得此功能
为此,您应该使用CreateView
,然后重写get_success_url
方法来重定向用户。 Classy class based views是一个很棒的网站,可用于浏览通用视图的所有选项
class ThreadCreateView(CreateView):
model = Thread
def get_success_url(self):
return reverse('app:chat', args=[self.object.pk])