我有一个活动的与会者名单。与会者对象键入配置文件对象。
在视图中,我试图附加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个列表合并为一个,并检查它们属于哪个列表(无论是在视图还是模板中)?我想要一个列表的原因是因为我将按字母顺序对参加者进行排序。提前感谢您的建议!
答案 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.profile
,attendee.verified
和attendee.from_user
。
答案 1 :(得分:1)
一个选项可能是创建元组列表:(<profile>, <status>)
,然后您可以迭代创建(profile, 'verified')
的第一个列表,然后对其他列表执行相同的操作,直到您有一个列表为止你可以分配到attendee_list字段并传递给上下文吗?