django concat строка с запятой в шаблоне

Я новичок в джанго. Как я могу объединить строку в цикле for в шаблоне django

{% for lead in project.leaders %}
    {% if forloop.counter == 1 %}
        {% lead_member = lead.0 %}
     {% else %}
        {% lead_member = ','.lead.0 %}
     {% endif %}
{{ lead_member }}
{% endfor %}

Наконец, мой lead_member должен быть test1,test2,test3....

что происходит сейчас (мой текущий код)

 {% for lead in project.leaders %}
    {{ lead.0}}
 {% endfor %}

и результат test1test2test3...., но я хочу сделать так же, как test1,test2,test3....


person Rejoanul Alam    schedule 17.09.2015    source источник
comment
На каком языке это имело бы смысл? Вы не можете назначать в шаблонах Django, но даже если бы вы могли, повторное назначение одной и той же переменной не создало бы список. И у вас нигде нет запятых, в этом и должен был заключаться весь смысл вопроса.   -  person Daniel Roseman    schedule 17.09.2015
comment
проверьте, теперь мой вопрос исправлен. это демонстрационный код. Я хочу добиться того, что упомянуто в последней строке   -  person Rejoanul Alam    schedule 17.09.2015
comment
Зачем вообще нужно конкатировать? шаблон просто отображает html-страницу, поэтому вывод будет таким же   -  person Sayse    schedule 17.09.2015
comment
@Sayse снова вопрос исправлен. пожалуйста, проверьте сейчас   -  person Rejoanul Alam    schedule 17.09.2015
comment
@ Скажите, что ваше решение будет объединять дополнительные comma, если есть только одни данные. Несколько запутался и не мог понять, что неясно в моем вопросе?? Я просто хочу поставить запятую после каждых данных   -  person Rejoanul Alam    schedule 17.09.2015


Ответы (2)


Попробуй это. оно работает

{% for lead in project.leaders %}
    {{ lead.0 }}{% if not forloop.last %}, {% endif %}
{% endfor %}

Вам не нужно ничего назначать, и вам не нужна такая сложность с использованием тегов назначения. Чтобы ваши шаблоны были глупо-простыми, вы всегда можете сделать это в своем представлении или даже на уровне модели:

# don't step on the `join` built-in
from django.template.defaultfilters import join as join_filter

class Project(models.Model):

    @property
    def leaders(self):
        return join_filter(self.objects.values_list('some_field', flat=True), ', ')

Тогда все, что вам нужно сделать в шаблоне, это:

{{ project.leaders }}
person Brandon    schedule 17.09.2015
comment
Спасибо. Пробовал в views не получилось. Однако первое решение сработало. - person Rejoanul Alam; 17.09.2015
comment
Я создал сложную структуру данных (словарь), используя dict(zip(k,a)). Я могу показать тебе, если хочешь - person Rejoanul Alam; 17.09.2015
comment
Конечно, пришлите мне ссылку на Gist или что-то в этом роде - person Brandon; 17.09.2015
comment
gist.github.com/rejoan/d35e11adc0886ac3ae51 Мне нужно разделить запятую username для lm, а также nm. Для этого не нужно прилагать усилий, так как проблема уже решена. - person Rejoanul Alam; 17.09.2015
comment
О Боже. Я понятия не имею, что происходит с этим Gist :) - person Brandon; 17.09.2015
comment
Да, я имел в виду, что Gist очень сложен для таких простых вещей, как объединение значений. - person Brandon; 17.09.2015

Трудно понять ваш вопрос, но я надеюсь, что я сделал это. Существует ряд связанных вопросов, таких как конкатенация строк. , Как объединить в django

Можно создать первую строку, соединить ее с запятой и создать новую строку для каждой итерации. Вы также можете сделать что-то вроде ','.join(list_of_strings) на стороне сервера перед рендерингом. Вы также можете присоединиться к своему списку шаблонов с помощью {{ list|join:", " }}.

person yavalvas    schedule 17.09.2015