Я делаю что-то вроде планировщика вечеринок.Я хочу, чтобы пользователи могли подтвердить свою посещаемость с возможностью отмены позже.Я хочу отобразить список участников на странице событий и список событий, подтвержденных для посещения на каждой странице профиля пользователя.Я также хочу использовать посещаемость, чтобы получать уведомления об этих событиях по электронной почте.
У меня есть Модель для мероприятия:
class Event(models.Model):
title = models.CharField(max_length=50)
date_of = models.DateField(default=datetime.date.today)
date_added = models.DateTimeField(auto_now_add=True,)
added_by = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
и Модель для Участников - чтобы связать Пользователей как участников с Событиями:
class Attendance(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='event')
attendee = models.ForeignKey(User, on_delete=models.CASCADE, related_name='attendee')
is_attending = models.BooleanField(default=False)
def __str__(self):
return "%s - %s" % (self.event, self.attendee)
Представление для События:
@login_required
def event(request, event_id):
event = get_object_or_404(Event, id=event_id)
shopping_list = event.item_set.order_by('date_added')
form = VSLForm()
attendee_list = event.event.all()
print("\n\n\n\n" + str(attendee_list) + "\n\n\n\n")
context = {'event': event, 'shopping_list': shopping_list, 'form': form}
return render(request, 'VSL/event.html', context)
У меня есть Просмотр для кнопки для подтверждения посещаемости
@login_required
def is_attending(request, event_id):
"""set user as attending an event."""
event = get_object_or_404(Event, id=event_id)
attendance = Attendance(
attendee = request.user,
event = event,
is_attending = True
)
attendance.save()
return redirect('VSL:events')
и Просмотр для кнопки для отмены посещаемости
@login_required
def not_attending(request, event_id):
"""set user as NOT attending an event."""
event = get_object_or_404(Event, id=event_id)
attendance = Attendance.objects.get(
attendee = request.user,
event = event,
is_attending = True
)
attendance.delete()
return redirect('VSL:events')
Будет много событий и много пользователей, и не все пойдут на все.
Строка attendee_list = event.event.all()
в представлении событий дает QuerySet, например: <Queryset [<Attendance: Christmas - Escatologist>, <Attendance: Christmas - Determinist>]>
Когдая хочу только эскатолог и детерминист бит.
Что я не знаю, так это как с пользой использовать эту информацию для
- создать список пользователей, посещающих каждое событие в шаблоне события
- создать список событий, подтвержденных как посещающих в шаблоне профиля пользователя
- отправлять электронные письма только посетителям событий (не всем активным пользователям)
Является ли модель посещаемости даже правильным способом?