2011-11-02 4 views
0

올바른 방법으로이 작업을 수행하는지 알 수 없습니다.Django Forms : Django에서 필드를 선택하는 방법

나는 양식을 가지고 : 내가 템플릿에 {message.sender, message ,message.id}을 보내고 위에서 볼 수 있듯이

class ConnectSelectMultipleForm(forms.Form): 
    class Meta: 
     model = Connect 

    def __init__(self, *args, **kwargs): 
     messages = kwargs.pop('messages') 
     choices = [] 
     if messages: 
      pass 
     else: 
      messages = [] 

     for message in messages: 
      index = (message.id, {message.sender, message, message.id}) 
      choices.append(index) 

     super(ConnectSelectMultipleForm, self).__init__(*args, **kwargs) 
     self.fields['message'] = forms.MultipleChoiceField(choices=choices, 
            widget=forms.CheckboxSelectMultiple) 

. 이제 템플릿에서 이러한 변수에 액세스하려고합니다.

{% for field in select_form %}  
    {% for fi in field %} 
     {{ fi.message }} 
     {{ fi.message.sender }} 
     {{ fi.message.id }} 
    {% endfor %} 
{% endfor %} 

위의 코드는 잘못되었습니다. 그러나 우리는 이것과 비슷한 것을 할 수 있습니까? 아니면 내가하려고하는 일을하는 대체 방법이 있습니까?

미리 감사드립니다.

### 편집

난 그냥

set([5, u'Everycrave', <Connect: The deal you refered has been bought>]) 

을 다음과 같이 필드가 난

이드 원하는 무엇 인쇄하여 점점 오전 OUPUT : 5, 이름 : Everycrave, 내용 : 거래는 당신은 그래서 개별적으로

+0

실제로 달성하고자하는 것을 설명하지 않았습니다. 출력 결과는 무엇이며 왜 필드 자체를 출력 할 수 없습니까? –

+0

내가 현재 받고있는 아웃 풋이 설정되어 있습니다 ([5, u'Everycrave ', <연결 : 당신이 추천 한 거래>]). 내가 원하는 출력은 5입니다. Everycrave, 당신이 추천 한 거래는 구입했습니다 – Akamad007

+0

그러나 이것이 현장과 어떤 관련이 있는지 이해하지 못합니다. 필드는 데이터 입력/선택을위한 필드입니다. 여기에 들어가거나 선택하려는 것은 무엇입니까? –

답변

4

당신은 원하지 않는 필드는 "필드 전체에 걸쳐 반복 할

를 구입했습니다 대해 참조 "전혀. 장고가 이것을 해줍니다. 가지고있는 유일한 문제는 필드의 선택에 대한 표시 값을 만드는 방법입니다. 어떤 이유로 문자열을 원할 때 세트로 만듭니다.
def __init__(self, *args, **kwargs): 
    messages = kwargs.pop('messages', None) 
    super(ConnectSelectMultipleForm, self).__init__(*args, **kwargs) 
    if messages is None: 
     messages = [] 

    choices = [(message.id, "%s: %s (%s)" % message.sender, message.text, message.id) 
       for message in messages] 

    self.fields['message'].choices = choices 

지금 당신은 단순히 일반적인 방법으로 템플릿의 필드를 참조하십시오 : {{ form.message }} 귀하의 __init__ 방법은 다음과 같이해야한다.

관련 문제