Как передать переменную onclick из javascript в форму django

Я новичок, и мне очень нужна ваша помощь для функции.

У вас есть таблица, и когда вы нажимаете на ячейку, открывается форма во всплывающем модале для ввода некоторого текста под названием "триграмма". Затем вы выбираете "время" (соответствующее строке) и "позицию" (соответствующую столбцу) на всплывающей форме, отправляете ее, и она помещает текст в нужную ячейку таблицы. Это работает правильно.

Теперь я хотел бы взять переменные "время/позиция" непосредственно из нажатой ячейки и передать эти переменные в форму django, чтобы вам нужно было только ввести текст в форму и отправить ее. У меня есть функция для получения времени и позиции после нажатия на ячейку, которая работает для отображения позиции нажатой ячейки (заголовок столбца, относящийся к этой ячейке) и времени (заголовок строки, относящийся к этой ячейке) :

$('table').on('click', 'td:not(:first-child)', function(e) {  
    var time = e.delegateTarget.tHead.rows[1].cells[this.cellIndex],
        position  = this.parentNode.cells[0];
    alert([$(position).text(), $(time).text()]);
})

У меня также есть эта функция для отображения модала, которая работает правильно :

$(function () {
    var cells = document.querySelectorAll('td:not(:first-child)');
    cells.forEach((e)=>{
    e.addEventListener("click", ()=>{
    $.ajax({
    beforeSend: function () {
        $("#modal-activity").modal("show");
    },
    success: function (data) {
        $("#modal-activity.modal-content").html(data.html_form);
    }
    });
    });
    });
});

Эта функция открывает следующую форму при нажатии на ячейку :

<div class="modal fade" id="modal-activity" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h3> Ajouter un contrôleur </h3>
      </div>
      <div class="modal-body">
                <form method="POST" action="" class="form-group" id="activity-form">
                    {% csrf_token %}
                    <input style="margin:5px;" type="text" class="form-control" placeholder="Trigramme" name="trigramme">
                    <select style="margin:5px;"  class="form-select" id="inputGroupSelect01" name="pos">
                        <option selected>Position</option>
                        <option value="CDT">CDT</option>
                        <option value="CS">CS</option>
                        <option value="SQR">SQR</option>
                        <option value="COO">COO</option>
                        <option value="INI">INI</option>
                    </select>
                    <select style="margin:5px;"  class="form-select" id="inputGroupSelect01" name="time">
                        <option selected>Début</option>
                        {% for time in TIME_VALUES %}
                            <option value="{{time}}">{{time}}</option>
                        {% endfor %}
                    </select>
                    <button style="margin-top: 10px;margin-left:20px" type="submit" name="add" value="add" class="btn btn-outline-dark">Ajouter</button>
                </form>
                      <div class="modal-footer">
                    <button type="button" class="close" data-dismiss="modal">Fermer</button>
                     </div>
            </div>
      </div>
    </div>
  </div>
</div>

Как вы видите, на этой форме нужно ввести текст, а затем выбрать время и позицию. Теперь вопрос: как передать переменные pos и time из javascript в форму django, чтобы пользователю не пришлось выбирать их вручную в форме?

Вот соответствующая функция в файле views.py :

def schedule(response, id):
    try:
        t = Table.objects.get(id=int(hashids.decode(id)[0]))
    except:
        t = None
    if response.method == "POST":
        if response.POST.get("add"):
            form = Activities(response.POST)
            if form.is_valid():
                trigramme = form.cleaned_data["trigramme"]
                pos = form.cleaned_data["pos"]
                time = form.cleaned_data["time"]
                t.activity_set.create(trigramme=trigramme, pos=pos, time=time)
        elif response.POST.get("delete"):
            t.activity_set.filter(id=response.POST.get("id")).delete()
        return HttpResponseRedirect("/%s" %hashids.encode(t.id))
    return render(response, "main/create.html", {'rangeHour':range(24), 
                                                'rangeMinute':range(0,60,30), 
                                                'rangePos':['CDT', 'CS', 'SQR', 'COO', 'INI',], 
                                                'table':t,
                                                'table_day':t.day.strftime("%d-%m-%Y"),
                                                'TIME_VALUES':TIME_VALUES,})

Здесь находится form.py :

class Activities(forms.ModelForm):
    trigramme = forms.CharField(label="Nom", max_length=6, required=True)
    pos = forms.CharField(label="Position", max_length=10, required=True)
    time = forms.CharField(label="Heure", max_length=10, required=True)
    class Meta:
        model = Activity
        fields = [
                'trigramme',
                'pos',
                'time',
                ]

Заранее спасибо за помощь!

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