Трудно понять из вашего примера, что именно здесь происходит, потому что вы подставляете фиктивные данные для того, что действительно выходит из базы данных.
Как вы уже написали, результатом всегда будет «да», потому что строка «7,10» содержит строку «1».
Это звучит как то, что вы пытаетесь достичь, это:
Если этот номер находится в этом списке, тогда да, в противном случае нет.
Итак, давайте перепишем этот шаблон, чтобы он был немного более реальным:
{% if mynumber in yeslist %} yes {% else %} no {% endif %}
Это предполагает, что:
- mynumber - это число
- yeslist - список чисел
Я не уверен, для чего вы используете floatformat в этом случае.
Если вышеприведенные утверждения не соответствуют действительности, и вам нужно использовать строки, то ваша работа намного сложнее, и вы должны обрабатывать yeslist на стороне сервера. Например, если yeslist - это просто строка типа «7,10,123,93,9,19,83», то выяснить, находится ли число 8
в списке, будет излишне сложно в шаблонах. Гораздо проще сделать это на ваш взгляд:
def myview(request):
ctx = {}
# ... do some work ...
# yeslist now has a string like "7,10,123,93,9,19,83"
ctx['yeslist'] = yeslist.split(',')
# ... do more work, and render the response ...
Теперь {% if '8' in yeslist %}
больше не будет возвращать ложный положительный результат, потому что он не выполняет сопоставление подстроки, он делает членство в списке.