Заполнение таблицы в Django щелчком по ячейке

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

Первый скриншот

Второй скриншот

Третий выстрел

Вместо того, чтобы выбирать час и позицию с помощью формы, я хотел бы добавить имя в таблицу, непосредственно щелкнув по ячейке таблицы. Есть ли у вас идеи, как это сделать? Спасибо !

Вот мой код :

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():
                name = form.cleaned_data["name"]
                pos = form.cleaned_data["pos"]
                time = form.cleaned_data["time"]
                t.activity_set.create(text=name, pos=pos, time=time)
        elif response.POST.get("delete"):
            t.activity_set.filter(id=response.POST.get("id")).delete()
        """to clear the post we redirect to the same page """
        return HttpResponseRedirect("/%s" %hashids.encode(t.id))
    if t is not None:
        return render(response, "main/create.html", {'rangeHour':range(24), 
                                                'rangeMinute':range(0,60,30), 
                                                'rangePos':['CDT', 'CS', 'SQR', 'COO', 'INI', 'ITM', 'DEP', 'ASS DEP', 'LOC', 'ASS LOC', 'SOL', 'ASS SOL', 'PVL', 'RMQ'], 
                                                'table':t,
                                                'table_day':t.day.strftime("%d-%m-%Y"),
                                                'TIME_VALUES':TIME_VALUES,
                                                'POS_J1_6H':POS_J1_6H,
                                                'POS_J1_10H':POS_J1_10H,
                                                'POS_J1_15H':POS_J1_15H,
                                                'POS_ALL':POS_ALL})
    else:
        return render(response, "main/create.html", {'rangeHour':range(24), 
                                                'rangeMinute':range(0,60,30), 
                                                'rangePos':['CDT', 'CS', 'SQR', 'COO', 'INI', 'ITM', 'DEP', 'ASS DEP', 'LOC', 'ASS LOC', 'SOL', 'ASS SOL', 'PVL', 'RMQ'], 
                                                'table':t,
                                                'TIME_VALUES':TIME_VALUES,
                                                'POS_J1_6H':POS_J1_6H,
                                                'POS_J1_10H':POS_J1_10H,
                                                'POS_J1_15H':POS_J1_15H,
                                                'POS_ALL':POS_ALL})

models.py :

class Activity(models.Model):
    POS =[
        ('CDT', 'CDT'),
        ('CS', 'CS'),
        ('SQR', 'SQR'),
        ('COO', 'COO'),
        ('INI', 'INI'),
        ('ITM', 'ITM'),
        ('DEP', 'DEP'),
        ('ASS DEP', 'ASS DEP'),
        ('LOC', 'LOC'),
        ('ASS LOC', 'ASS LOC'),
        ('SOL', 'SOL'),
        ('ASS SOL', 'ASS SOL'),
        ('PVL', 'PVL'),
        ('RMQ','RMQ')
    ]
    TIME = [
        ('6:00'),
        ('7:00'),
        ('8:00'), 
        ('9:00'), 
        ('10:00'), 
        ('11:00'), 
        ('12:00'), 
        ('13:00'),
        ('14:00'),
        ('15:00'), 
        ('16:00'),
        ('17:00'),
        ('18:00'),
        ('19:00'),
        ('20:00'),
        ('21:00'),
        ('22:00'),
    ]

    table = models.ForeignKey(Table, on_delete=models.CASCADE)
    text = models.CharField(max_length=25)
    pos = models.CharField(max_length=9, choices=POS)
    time = models.JSONField()

forms.py :

class Activities(forms.Form):
    name = forms.CharField(label="Nom", max_length=25, required=True)
    pos = forms.CharField(label="Position", max_length=10, required=True)
    time = forms.CharField(label="Heure", max_length=10, required=True)

create.html :

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