TASK: There is a task (Task). Within the framework of the task, the executors conduct correspondence (Message). Hierarchy: Task -> Many posts. How to return to the task body after adding a new message on the fly?

URLS.py

... path( 'message/<uuid:id>/', views.MessageCreate.as_view(), name='add_message' ), ... 

MODEL:

 class Message(models.Model): id = models.UUIDField( primary_key=True, default=uuid.uuid4, editable=False, ) author = models.ForeignKey( to=Account, on_delete=models.CASCADE, blank=False, null=False, verbose_name='message author', related_name='messages' ) task = models.ForeignKey( Task, on_delete=models.CASCADE, related_name='messages' ) text = models.TextField( max_length=1000 ) def get_absolute_url(self): return reverse('projects:message_detail', args=[ self.id ]) def __str__(self): return '{} about {}'.format(self.message_author.get_full_name, self.task.name) 

VIEW:

  class MessageCreate(CreateView): model = Message form_class = MessageForm template_name = 'projects/forms/message_cu_form.html' success_url = '/' 

FORM:

 class MessageForm(forms.ModelForm): class Meta: model = Message fields = [ 'author', 'text', 'task', ] 

HTML:

 <form action="{% url 'projects:add_message' task.id %}" method="post"> {% csrf_token %} <button type="submit" class="btn btn-primary">Write message</button> </form> {% endif %} 

    1 answer 1

     class MessageCreate(CreateView): model = Message fields = ['author', 'text', 'task'] template_name = 'projects/forms/message_cu_form.html' get_success_url(self): return redirect(self.request.META.get('HTTP_REFERER', '/')) 

    Or add to the form the next field containing the current URL and return to it, and not to the referrer.