Я создал базовый календарь, который генерирует таблицу с текущим месяцем (взятым из URL) с помощью встроенной функции calendar.Calendar, но я хотел бы присоединять события к дням, которые сгенерированы. Какой был бы лучший способ сделать это?Django добавляет события в дни в календаре?
В настоящее время в моих взглядах:
def view_calendar(request, year=None, month=None):
events = Event.objects.filter(creator=request.user)
new_event_form = EventForm()
now = datetime.date.today()
if year:
year = int(year)
else:
year = now.year
if month:
month = int(month)
else:
month = now.month
cal = calendar.Calendar(calendar.SUNDAY)
month_days = cal.monthdatescalendar(year, month)
args = {'events': events, 'month': month, 'year': year, 'month_days': month_days}
args.update(csrf(request))
args['new_event_form'] = new_event_form
return render(request, 'calendar.html', args)
И в моем шаблоне я могу назвать недели и дни, как это:
<table cellpadding="3" width="100%">
<tr>
<td>Sunday</td>
<td>Monday</td>
<td>Tuesday</td>
<td>Wednesday</td>
<td>Thursday</td>
<td>Friday</td>
<td>Saturday</td>
</tr>
{% for week in month_days %}
<tr>
{% for day in week %}
<td>
{{day|date:"j"}}<br />
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
То, что я хотел бы сделать, это что-то вроде этого в моей просмотров:
for week in month_days:
for day in week:
day['events'] = list(Event.objects.filter(creator=request.user, start_date=day))
Но я получаю эту ошибку: TypeError: 'datetime.date' объект г oes не поддерживает назначение позиции
Есть ли способ, с помощью которого я могу легко конвертировать эти дни в объекты, поддерживающие назначение объектов, чтобы я мог прикреплять события к дням и добавлять их в календарь?
Спасибо, у нас есть счастливое рождество, которое сегодня расчитывает.
Я получаю «TypeError: ожидается строка или буфер» ошибку 500 от конкретной линии «за день в неделю [ за неделю в month_days] вы могли бы дать мне дополнительную информацию о том, что должна делать эта строка? –
Я получил работу, основанную на ответе, предоставленном вами, добавив его в качестве следующего ответа ниже. пока я наконец добрался! –