【发布时间】:2018-12-05 11:26:08
【问题描述】:
我正在制作类似于派对策划师的东西。 我希望用户能够确认他们的出席,并可以选择稍后取消。 我想在活动页面上显示与会者列表,并在每个用户个人资料页面上显示确认参加的活动列表。 我还想使用出勤率来选择更新有关这些活动的电子邮件。
我有一个活动的模型:
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 [<Attendance: Christmas - Escatologist>, <Attendance: Christmas - Determinist>]>
当我想要的只是 Escatologist 和 Determinist 位时。
我不知道如何有效地使用这些信息来
- 在活动模板中创建参加每个活动的用户列表
- 创建在用户个人资料模板中确认参加的活动列表
- 仅向活动参与者(并非所有活跃用户)发送更新电子邮件
有一个出勤模型甚至是解决这个问题的正确方法吗?
【问题讨论】:
标签: django python-3.x django-models django-templates django-views