ошибка в django: too many values to unpack (expected 2)

Я только учу django. Нужно в форме django выбор select заполинть значениями с другой модели. Пытаюсь перебрать все значения записаные в поле БД, записать в переменную и вставить их в форму выпадающего списка.

choe = []
c = 1
for i in range(1, ServicesAndPrice.objects.count()+1):
    a = True
    b = 0
    for j in ServicesAndPrice.objects.order_by('id'):
        b += 1
        if b == c:
            if a:
                i = str(i)
                j = str(j)
                choe.append((i, j))
                a = False
                c += 1
print(', '.join(map(str, choe)))

widgets = {
            'choice_service': Select(
                attrs={
                    'class': 'CreateTask select',
                },
                choices={
                    ', '.join(map(str, choe))
                }
            ),
        }

Функцию print() выводит отлично, прям то что нужно что должно быть записано в choices:

('1', 'Услуга1'), ('2', 'Услуга2'), ('3', 'Услуга3'), ('4', 'Услуга4'), ('5', 'Услуга5'), ('6', 'Услуга6'), ('7', 'Услуга7'), ('8', 'Услуга8'), ('9', 'Услуга9'), ('10', 'Услуга10'), ('11', 'Услуга11'), ('12', 'Услуга12'), ('13', 'Услуга13'), ('14', 'Услуга14'), ('15', 'Услуга15'), ('16', 'Услуга16')

а в choices, получаю такую ошибку - too many values to unpack (expected 2)

Может кто знает как избавиться от ошибки, или может сделать эту процедуру проще, буду благодарен помощи


Ответы (2 шт):

Автор решения: Za Ars

Ваш choices - это множество с одной строкой внутри. Длина этой строки больше 2 элементов (символов), поэтому и получается ошибка – andreymal

    widgets = {
        'choice_service': Select(
            attrs={
                'class': 'CreateTask select',
            },
            choices=list(map(str, choe)))
        ),
    }
→ Ссылка
Автор решения: ArgusLibovski

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

choe = set() # Вместо списка множество

c = 1
for i in range(1, ServicesAndPrice.objects.count()+1):
    a = True
    b = 0
    for j in ServicesAndPrice.objects.order_by('id'):
        b += 1
        if b == c:
            if a:
                i = str(i)
                j = str(j)
                choe.add((j, j))
                a = False
                c += 1




widgets = {
    'choice_service': Select(
        attrs={
            'class': 'CreateTask select',
        },
        choices=choe # вместо того чтоб вставлять список в множество, вставил сразу множество
    ),
}
→ Ссылка