Заполнение таблицы в 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 :