Как передать initial в форму?

Столкнулся с такой проблемой. Хочу сделать отправку сообщения с выбором пользователя, который в друзьях.

За основу взят django 1.4 и база CouchDB. Во вьюхе у меня следующее:
def send_msg(request):
    if request.method == 'POST':
        form = Send_Msg_User(request.POST)
        if form.is_valid():
            friend_id = form.cleaned_data['selection']
            user_id = request.user._id
            msg = form.cleaned_data['msg']
            doc_id = uuid4().hex
            time = datetime.datetime.now()
            time = time.strftime('%Y-%m-%d %H:%M:%S')
            type_doc = "msg"
            status = "new"
            django_couch.db('msgdb')[doc_id] = {'type': type_doc, 'from': user_id, 'to': friend_id, 'time': time, 'status': status}
    else:
        user_id = request.user._id
        friends = django_couch.db().view('list/friends', include_docs=True, key=user_id).rows
        documents = [row.doc for row in friends]
        for row in documents:
            print row.id, row.first_name, row.last_name
        form = Send_Msg()
    return render_to_response('send_msg.tpl', {'form': form})


Массив documents = [row.doc for row in friends] мне нужно передать в форму. Как это можно осуществить?

Код формы у меня такой:
class Send_Msg(forms.Form):
    selection = forms.MultipleChoiceField(choices=(
    ))
    post = forms.CharField(min_length=10, widget=forms.Textarea(attrs={'width': "100%", 'cols': "70", 'rows': "20", }),
                           label="Ваше сообщение")

Мне нужно получить массив в форму и задать Choices.
  • Вопрос задан
  • 2600 просмотров
Пригласить эксперта
Ответы на вопрос 2
dizballanze
@dizballanze
Software developer at Yandex
Комментировать
Romastr
@Romastr Автор вопроса
Решил таким способом:
class Send_Msg(forms.Form):
    def __init__(self, documents, *args, **kwargs):
        row = [(row.id, row.first_name+' '+row.first_name) for row in documents]
        super(Send_Msg, self).__init__(*args, **kwargs)
        self.fields['friends'] = forms.MultipleChoiceField(choices=row)
        self.fields['msg'] = forms.CharField(min_length=10, widget=forms.Textarea(attrs={'width': "100%", 'cols': "70", 'rows': "20", }),
                                             label="Ваше сообщение")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы