Как добавить/перенести список значений из одной модели в другую в django?

Позвольте мне показать вам, что я сделал успешно и чего я пытаюсь достичь сейчас.

У меня есть 2 модели. Обе имеют одинаковые 3 поля. Имя, Месяц, Номер. Две модели - Main и BMO.

Я фильтрую первую модель на основе имени и месяца и получаю список значений столбца number. Код выглядит следующим образом-

result= Main.objects.filter(name="John", month='apr').values_list('number', flat=True)

Затем я отображаю это на шаблоне django с помощью цикла for и условных условий. Код выглядит следующим образом -

<p>result:
    <span>
        {% for i in result %}
            {{i}}{% if not forloop.last %}+{% endif %}
        {% endfor %}

    </span>
</p>


result = 2+4+12+7+18

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

Чего я хочу достичь:

Я хочу получить тот же список значений, но вместо того, чтобы показывать его в шаблоне, я хочу вставить его в поле другой модели. Чтобы было понятно, я хочу, чтобы все значения с включенным знаком плюс (так, как это выглядит в моем шаблоне) были вставлены в одно поле второй модели BMO. Если у меня есть 10 значений, все они должны быть объединены знаком плюс и добавлены в одно поле, а не распределены по 10 строкам столбца.

ВОТ ЧТО Я ПОПРОБОВАЛ:

Я отфильтровал вторую модель BMO на основе имени и месяца и попробовал обновить число с помощью метода .update(). Я добавил следующую строку кода в views.py прямо под первой строкой кода. Я не использую шаблон вообще.

result= Main.objects.filter(name="John", month='apr').values_list('number', flat=True)

Bmo.objects.filter(name="test", month='apr).update(number = result)

Это ничего не изменило и не добавило. Поэтому я попробовал новую строку кода с циклом for следующим образом -

result= Main.objects.filter(name="John", month='apr').values_list('number', flat=True)

for i in result:
    Bmo.objects.filter(name__icontains = 'test').update(number = i)

Это также ничего не изменило. Есть только 1 строка с именем 'test', поэтому я не стал заморачиваться с фильтром по месяцам. Я не был полностью уверен в цикле for, но я уже успешно обновлял категории с совпадением имен с помощью этого кода, поэтому подумал, что это может сработать. Разница в том, что категория была одной строкой, например category='personal', а не переменной или несколькими переменными, как в данном случае.

Я думаю, что я очень близок к достижению того, что я хочу, в пределах строки или двух кодов. Если есть более простой способ сделать то, что я пытаюсь сделать, я весь внимание. Спасибо за любой вклад.

Вы можете сделать это следующим образом:

result = Main.objects.filter(
   name="John", month='apr'
).values_list('number', flat=True)

number = str()
count = len(result)

for index, r in enumerate(result):
  number += str(r) + '+' if count != index + 1 else str(r)

Bmo.objects.filter(name="test", month='apr').update(number = number)
Вернуться на верх