У меня есть две модели, одна из которых - модель аренды, в которой есть поля типа address
, prefix
, start_time
и т. Д. Вторая - модель Sub, в которой есть поля, такие как range
, subnet
, * 1006.*.Что мне нужно, так это отсортировать аренду по сабвуферам, в которые они входят, на основе поля диапазона саба.
Я добавил поля в оба для сравнения.Эти поля addr_cut
, addr_end
для аренды и range_low_cut
, range_low_end
и range_high_end
для Sub.
То, что я пытаюсь сделать, но это не получается:
{%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
Успех!Спасибо всем, кто нашел время, чтобы разобраться в этом.По ссылке, скопированной в ответе Дэвида, я попал туда, где мне нужно быть.