【发布时间】:2018-04-24 12:58:38
【问题描述】:
我有两个模型,一个是具有 address、prefix、start_time 等字段的 Lease 模型。第二个是具有 range、subnet、@987654326 等字段的子模型@。我需要的是根据 Sub 的 range 字段将租约分类到它们所属的 Subs 中。
我为两者添加了字段以进行比较。这些字段是addr_cut、addr_end(用于租赁)和range_low_cut、range_low_end 和range_high_end(用于子)。
我试图做的失败是这样的:
{%for lease in leases%}
{%for sub in subs%}
{%if lease.addr_cut in sub.range_low_cut%}
{%if lease.addr_end >= sub.range_low_end%}
{%if lease.addr_end <= sub.range_high_end%}
<tr>
<td>{{lease.DUID_text }}</td>
<td>{{lease.addr_text}}</td>
<td>{{lease.pub_date}}</td>
<td>{{lease.e_date}}</td>
<td>{{lease.prefix}}</td>
</tr>
{%endif%}
{%endif%}
{%endif%}
{%endfor%}
{%endfor%}
现在如果我显示lease.addr_cut 和sub.range_low_cut 的内容:
2605:7300:201:3: 2605:7300:201:3:
看起来第一个 if 应该得到绿灯吧?错误的。无论内容是否相同,每次检查都会失败。我是新手,我知道我可能试图在模板中引入太多逻辑,但似乎这是基于显示的,所以它属于这里。
所以我的问题。如果模板中的逻辑过多,我应该在哪里以及如何实现此逻辑以将我的租约分类到它们所属的子网中。或者它可能只是执行错误,一个好心的陌生人可以指出我的语法错误。谢谢你们。
按要求提供参考型号:
class Lease(models.Model):
DUID_text = models.CharField(max_length=100)
addr_text = models.CharField(max_length=100)
pub_date = models.CharField(max_length=100)
e_date = models.CharField(max_length=100)
prefix = models.CharField(max_length=100)
addr_cut = models.CharField(max_length=100)
addr_end = models.CharField(max_length=100)
def __str__(self):
return self.addr_cut
class Sub(models.Model):
Name = models.CharField(max_length=100)
subnet = models.CharField(max_length=100)
rang = models.CharField(max_length=100)
prefix = models.CharField(max_length=100)
range_low_cut = models.CharField(max_length=100)
range_low_end = models.CharField(max_length=100)
range_high_cut = models.CharField(max_length=100)
range_high_end = models.CharField(max_length=100)
def __str__(self):
return self.range_low_cut
成功!感谢所有花时间调查此事的人。按照大卫在答案中复制的链接,我可以到达我需要的地方。
【问题讨论】:
-
最后一行你缺少
},你在哪里关闭这些标签?如{% endif %}, {% endfor %}? -
抱歉,为简洁起见,我遗漏了其余代码,我的错误在于缺少
}。代码运行良好,没有抛出任何错误,只是没有给我预期的输出。 -
你能展示你的模型吗?
-
你去。感谢您的观看。
标签: django django-models django-templates django-views