Django добавление ответных сообщений

<div class="form-group row">
   <form class="reply-form" method="post" action=".">
      {% csrf_token %}
      <input type="hidden" name="{{ message.id }}" value="{{ message.id }}">
      <div class="form-group">
         <textarea name="text" cols="60" rows="2" maxlength="4096" required="" id="id_text"></textarea>
      </div>
      <input type="submit" value="Submit" >
   </form>
</div>

Я пытаюсь использовать вышеописанное для ответа на сообщение. Как мне использовать идентификатор сообщения, чтобы добавить ответ на это сообщение из действия, используя представления?

models.py

class Messages(models.Model):
    sender = models.ForeignKey(Profile,related_name='sender',on_delete=models.CASCADE)
    receiver = models.ForeignKey(Profile,related_name='receiver',on_delete=models.CASCADE)
    subject = models.CharField(default='',max_length=100)
    text = models.CharField(default='',max_length=4096)
    time = models.DateTimeField(auto_now_add=True)
    read = models.BooleanField(default=False)
    parent = models.ForeignKey('self', on_delete=models.CASCADE,
                            null=True, blank=True, related_name='contact_parent')

    def get_children(self):
        return Messages.objects.filter(parent=self)

    def __str__(self):
        return '{} to {} :{}'.format(self.sender,self.receiver,self.text)

Я создал сообщение следующим образом

class MessageForm(forms.ModelForm):
    subject = forms.CharField(max_length=100, required=False, help_text='Optional.')
    text = forms.CharField(max_length=4096, required=True, help_text='Required.')
    class Meta:
        model = Messages
        fields = ('receiver','subject','text',)

views.py

elif 'sendMessage' in request.POST:
    sendMessageForm = MessageForm(request.POST or None,)
    if sendMessageForm.is_valid(): 
        sendMessageFormUser =  sendMessageForm.save(commit=False)
        sendMessageFormUser.sender = request.user
        sendMessageFormUser.save()
        unreadMessagesCount = Messages.objects.filter(Q(receiver=request.user) & Q(read=False)).count()
        context['unreadMessagesCount'] = unreadMessagesCount
        return redirect('home')

Расширенный html для любого использования

<div class="col-md-12">
    <div class="accordion" id="accordionExample">
        {% for message in Inbox %}
        <div class="card">
          <div class="card-header" id="heading{{ forloop.counter }}">
            <h5 class="mb-{{ forloop.counter }}">
              <button class="btn" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ forloop.counter }}" aria-expanded="false" aria-controls="collapse{{ forloop.counter }}">
                {{ message.sender }} {{ message.subject}} {{ message.time }}
              </button>
            </h5>
          </div>
      
          <div id="collapse{{ forloop.counter }}" class="collapse" aria-labelledby="heading{{ forloop.counter }}" data-parent="#accordionExample">
            <a id="{{ message.id }}" onclick="alert(this.id)">X</a>
            <div class="card-body">
                {{ message.text}} 
                {% if message.contact_parent.count %}
                <div>
                    <ul>
                        {% for reply in message.get_children %}
                            <li>{{ reply.sender }}</li>
                            <li>{{ reply.text }}</li>
                            <li>{{ reply.time }}</li>
                        {% endfor %}    
                    </ul>
                </div>
                {% endif %}
                <div class="form-group row">
                    <form class="reply-form" method="post" action=".">
                        {% csrf_token %}
                        <input type="hidden" name="{{ message.id }}" value="{{ message.id }}">
                        <div class="form-group">
                            <textarea name="text" cols="60" rows="2" maxlength="4096" required="" id="id_text"></textarea>
                        </div>
                        <input type="submit" value="Submit" >
                    </form>
                </div>
            </div>
          </div>
        </div>
        {% endfor %}
      </div>
from django.views.decorators.http import require_http_methods
@require_http_methods(["POST"])
def reply(request,messageID):
    print(messageID)
    parent = Messages.objects.get(id=messageID)
    #Not sure how the receiver is found
    reply = Messages.objects.create(text=request.POST['text'], receiver=parent.sender, sender=request.user, parent=parent)
    print(parent)
    print(reply)
    print(request.POST)
    return redirect('home')

Мне просто нужен вид только для сообщений, а затем взять сообщение, которое принадлежит этому идентификатору и оттуда создать новое сообщение, которое указывает на родителя. Очевидно, что сейчас все это указывает на верхнее сообщение, а не на ответы, я думаю, я не совсем уверен.

Вернуться на верх