Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django模板中比较两个for循环的值并使用if语句?_Python_Django_Python 3.x_For Loop_Django Templates - Fatal编程技术网

Python 如何在django模板中比较两个for循环的值并使用if语句?

Python 如何在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) /

这可能是一个令人困惑的问题。 我在sqllite中有三个表:1)事件2)委托3)事件委托 第一个存储所有事件,第二个存储所有代理,第三个包含eventid和delegateid以显示特定代理正在参加该特定事件。 在我的事件详细信息页面中,我只想显示其id与该事件id一起出现在event_delegate表中的代理。当前我正在使用此代码,但不工作

视图.py

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()???我认为这两种方法都可以实现,无论是通过查询
事件
还是
事件委托
?我在这里反向查询
事件
。但您也可以使用
事件委托
。请参阅我的更新答案: