2010-11-24 2 views
2

내 모델 의 설명 필드를 django 형식으로 기꺼이 출력하려고합니다.Python Django Forms 다중 선택 HTML 출력

주위를 검색 한 후 내가 필요한 것을 찾지 못한 후 여기에서 물어볼 수 있기를 바랍니다.

여기 내 모델, 양식, 템플릿 및 템플릿 출력이 있습니다. 나는이 게시물을 간결하게 만들기 위해 비난했다.

이 프로젝트의보기에서 작업 중이므로 모델이 다른 사람이 디자인했기 때문에 실제로 변경할 수 없습니다.

MODELS :

1)

from django.db import models 

class Project(models.Model): 
    description = models.TextField(blank = True) 
    name = models.CharField(max_length = 255, blank = True) 

    def __unicode__(self): 
     """ String representation of projects. """ 
     return unicode(self.name) 

2)

from django.db import models 

class Share(models.Model): 

    description = models.TextField  
    last_access = models.DateTimeField(auto_now = True) 
    location = models.URLField(verify_exists = False) 
    project = models.ForeignKey('Project', related_name = 'shares') 

    def __unicode__(self): 
     return unicode(self.location) 

FORM :

from django import forms 
from models import Share 

class ExportForm(forms.Form): 
    ps = forms.ModelMultipleChoiceField(queryset=Share.objects.filter(project=1),widget=forms.SelectMultiple()) 

VIEW :

,174,
form = ExportForm() 

TEMPLATE :

{{ form.ps }} 

템플릿 출력 : 내가 할 수 있지만, '주변 검색에서 몇 가지를 시도했습니다

<select multiple="multiple" name="ps" id="id_ps"> 
<option value="11">Share object </option> 
<option value="10">Share object </option> 
</select> 

나는 여러 선택 BOS를 OUPUT이이

t '공유'대신 '설명'입력란을 만들 수 있습니다.

많은 조언을드립니다.

감사합니다.

답변

1

이 작업을 수행하는 가장 쉬운 방법은 대신 위치 설명을 반환하는 공유 모델의 __unicode__ 방법을 변경하는 것입니다,하지만 당신은 당신이 모델을 변경할 수없는 말 때문에 당신은 ModelMultipleChoiceField를 서브 클래스와 label_from_instance 메서드를 재정의해야합니다.

이것은 in the documentation입니다.

+0

출력 결과에 따라 표시된 '__unicode__' 메서드가 호출되는 것처럼 보이지 않습니다. 그렇다면'

+0

물론 이것은 아마도 관계없이 작동 할 것입니다 +1 +1 – aaronasterling

+0

고맙습니다.이게 완벽하게 작동합니다. – Jaocb