Python 如何在django模板中比较两个for循环的值并使用if语句?
这可能是一个令人困惑的问题。 我在sqllite中有三个表:1)事件2)委托3)事件委托 第一个存储所有事件,第二个存储所有代理,第三个包含eventid和delegateid以显示特定代理正在参加该特定事件。 在我的事件详细信息页面中,我只想显示其id与该事件id一起出现在event_delegate表中的代理。当前我正在使用此代码,但不工作 视图.pyPython 如何在django模板中比较两个for循环的值并使用if语句?,python,django,python-3.x,for-loop,django-templates,Python,Django,Python 3.x,For Loop,Django Templates,这可能是一个令人困惑的问题。 我在sqllite中有三个表:1)事件2)委托3)事件委托 第一个存储所有事件,第二个存储所有代理,第三个包含eventid和delegateid以显示特定代理正在参加该特定事件。 在我的事件详细信息页面中,我只想显示其id与该事件id一起出现在event_delegate表中的代理。当前我正在使用此代码,但不工作 视图.py def event_det(request, eid): data = Event.objects.filter(id=eid) /
def event_det(request, eid):
data = Event.objects.filter(id=eid) //SELECTING ONLY THE CLICKED EVENT
data2 = Delegate.objects.all() // SELECTING ALL THE DELEGATES FROM DB
data3 = EventDelegate.objects.filter(event_id=eid) //SELECTING RECORDS FROM EVENT_DELEGATE WHERE eventid is eid
return render(request, 'event_details.html', {'event': data, 'delegates': data2, 'selectdelegates': data3})
模板
<tbody>
{% for del in delegates %}
{% for sd in selectdelegates %}
{% if del.id == sd.delegate_id %}
<tr>
<td>{{ del.id }}</td>
<td>{{ del.first_name }} {{ del.last_name }}</td>
<td>{{ del.email }}</td>
<td>{{ del.phone }}</td>
<td>{{ del.company }}</td>
<td>{{ del.designation }}</td>
<td><a href="{% url 'delegate' dataset_id=del.dataset_id %}">View</a></td>
</tr>
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
{del在委派%中的百分比}
{selectdelegates%中sd的%s}
{%if del.id==sd.delegate\u id%}
{{del.id}}
{{del.first_name}{{del.last_name}}
{{del.email}
{{del.phone}}
{{del.company}}
{{del.designation}}
{%endif%}
{%endfor%}
{%endfor%}
如果需要,我可以分享更多详细信息…如果事件和事件委托之间存在如下关系:
class EventDelegate(models.Model):
event = models.ForeignKey(Event, on_delete=models.DO_NOTHING)
delegate = models.ForignKey(Delegate, on_delete=models.DO_NOTHING)
def event_det(request, eid):
data = Event.objects.get(id=eid) //SELECTING ONLY THE CLICKED EVENT
return render(request, 'event_details.html', {'event': data})
# template
{% for e in event.eventdelegate_set.all %}
<tr>
<td>{{ e.delegate.id }}</td>
<td>{{ e.delegate.first_name }} {{ e.delegate.last_name }}</td>
<td>{{ e.delegate.email }}</td>
<td>{{ e.delegate.phone }}</td>
<td>{{ e.delegate.company }}</td>
<td>{{ e.delegate.designation }}</td>
<td><a href="{% url 'delegate' dataset_id=e.delegate.dataset_id %}">View</a></td>
</tr>
{% endfor %}
然后您可以这样尝试:
class EventDelegate(models.Model):
event = models.ForeignKey(Event, on_delete=models.DO_NOTHING)
delegate = models.ForignKey(Delegate, on_delete=models.DO_NOTHING)
def event_det(request, eid):
data = Event.objects.get(id=eid) //SELECTING ONLY THE CLICKED EVENT
return render(request, 'event_details.html', {'event': data})
# template
{% for e in event.eventdelegate_set.all %}
<tr>
<td>{{ e.delegate.id }}</td>
<td>{{ e.delegate.first_name }} {{ e.delegate.last_name }}</td>
<td>{{ e.delegate.email }}</td>
<td>{{ e.delegate.phone }}</td>
<td>{{ e.delegate.company }}</td>
<td>{{ e.delegate.designation }}</td>
<td><a href="{% url 'delegate' dataset_id=e.delegate.dataset_id %}">View</a></td>
</tr>
{% endfor %}
如果事件和事件委托之间存在如下关系,则可以在中找到更多信息。:
class EventDelegate(models.Model):
event = models.ForeignKey(Event, on_delete=models.DO_NOTHING)
delegate = models.ForignKey(Delegate, on_delete=models.DO_NOTHING)
def event_det(request, eid):
data = Event.objects.get(id=eid) //SELECTING ONLY THE CLICKED EVENT
return render(request, 'event_details.html', {'event': data})
# template
{% for e in event.eventdelegate_set.all %}
<tr>
<td>{{ e.delegate.id }}</td>
<td>{{ e.delegate.first_name }} {{ e.delegate.last_name }}</td>
<td>{{ e.delegate.email }}</td>
<td>{{ e.delegate.phone }}</td>
<td>{{ e.delegate.company }}</td>
<td>{{ e.delegate.designation }}</td>
<td><a href="{% url 'delegate' dataset_id=e.delegate.dataset_id %}">View</a></td>
</tr>
{% endfor %}
然后您可以这样尝试:
class EventDelegate(models.Model):
event = models.ForeignKey(Event, on_delete=models.DO_NOTHING)
delegate = models.ForignKey(Delegate, on_delete=models.DO_NOTHING)
def event_det(request, eid):
data = Event.objects.get(id=eid) //SELECTING ONLY THE CLICKED EVENT
return render(request, 'event_details.html', {'event': data})
# template
{% for e in event.eventdelegate_set.all %}
<tr>
<td>{{ e.delegate.id }}</td>
<td>{{ e.delegate.first_name }} {{ e.delegate.last_name }}</td>
<td>{{ e.delegate.email }}</td>
<td>{{ e.delegate.phone }}</td>
<td>{{ e.delegate.company }}</td>
<td>{{ e.delegate.designation }}</td>
<td><a href="{% url 'delegate' dataset_id=e.delegate.dataset_id %}">View</a></td>
</tr>
{% endfor %}
更多信息可以在中找到。如果我理解正确,EventDelegate模型具有事件和委托的ForeignKey。因此,您需要的是链接到相关事件的EventDelegate对象的查询集
ed_qs = EventDelegate.objects.filter( event_id = event.id )
(对于alpha排序,可以添加.order\u by(“delegate\u lastname”)
,然后选择。选择相关()
将此传递给模板,然后
<tbody>
{% for ed in ed_qs %}
<tr>
{{ed.delegate.whatever}} ...
{ed_qs%中的ed的百分比}
{{ed.delegate.whatever}}。。。
或者,您可以在queryset中使用
.annotate
将链接委托的所需字段复制到返回的对象上。然后,您可以通过选择的注释名称(例如{ed.delegate\u firstname})来引用注释
。如果这很重要的话,我想这将是最有效的。如果我理解正确,EventDelegate模型具有事件和委托的ForeignKey。因此,您需要的是链接到相关事件的EventDelegate对象的查询集
ed_qs = EventDelegate.objects.filter( event_id = event.id )
(对于alpha排序,可以添加.order\u by(“delegate\u lastname”)
,然后选择。选择相关()
将此传递给模板,然后
<tbody>
{% for ed in ed_qs %}
<tr>
{{ed.delegate.whatever}} ...
{ed_qs%中的ed的百分比}
{{ed.delegate.whatever}}。。。
或者,您可以在queryset中使用
.annotate
将链接委托的所需字段复制到返回的对象上。然后,您可以通过选择的注释名称(例如{ed.delegate\u firstname})来引用注释
。我的猜测是,如果这很重要的话,这将是最有效的。这行不是应该是这样的吗``data=EventDelegate.objects.get(event\u id=eid)//只选择单击的事件``我认为在你的答案views.py代码中是不完整的。请你能提供完整的视图函数event\u det()???我认为这两种方法都可以实现,都是通过查询事件或事件代理?我在这里反向查询事件。但是你也可以使用事件代理。请看我更新的答案:这行不是应该像这样吗``data=EventDelegate.objects.get(Event\u id=eid)//仅选择单击的事件```我认为您的答案views.py代码不完整。请提供完整的视图函数EVENT_det()???我认为这两种方法都可以实现,无论是通过查询事件
还是事件委托
?我在这里反向查询事件
。但您也可以使用事件委托
。请参阅我的更新答案: