组合列表并执行检查

时间:2012-09-13 19:21:07

标签: python django django-templates

我有一个活动的与会者名单。与会者对象键入配置文件对象。 在视图中,我试图附加3个列表来组成attendee_list

Models.py

class Attendee(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    profile = models.ForeignKey(Profile)
    event = models.ForeignKey(Event)
    verified = models.BooleanField(default=False)
    from_user = models.BooleanField(default=False)

view.py

verified_attendees = [va.profile for va in Attendee.objects.filter(event=event, verified=True)]
unverified_attendees = [uva.profile for uva in Attendee.objects.filter(event=event, verified=False, from_user=True)
pending_attendees = [pa.profile for pa in Attendee.objects.filter(event=event, from_user=False, verified=False)]
attendee_list = ????

我想要完成的事情(模板):

  

{参与者参加者名单%{%}

...
Name            |       Status
--------------------------------------
Jon Doe         |       Pending
Annie Smith     |       Verified!
Abraham Snow    |       Confirm Yes/No?

如何将这3个列表合并为一个,并检查它们属于哪个列表(无论是在视图还是模板中)?我想要一个列表的原因是因为我将按字母顺序对参加者进行排序。提前感谢您的建议!

2 个答案:

答案 0 :(得分:4)

为什么你可以在第一时间分开:

attendees = [(a.profile, a.verified, a.from_user)
                 for a in Attendee.objects.filter(event=event)]

然后:

{% for attendee, verified, from_user in attendees_list %}

然后,您可以使用{% if verified %}{% if from_user %}块来控制每个人在模板级别所说的内容。

或者,您可以这样做:

attendees = Attendee.objects.filter(event=event)

并直接在模板中引用attendee.profileattendee.verifiedattendee.from_user

答案 1 :(得分:1)

一个选项可能是创建元组列表:(<profile>, <status>),然后您可以迭代创建(profile, 'verified')的第一个列表,然后对其他列表执行相同的操作,直到您有一个列表为止你可以分配到attendee_list字段并传递给上下文吗?