2016-07-23 2 views
0

저는 Python과 Django에 익숙합니다. 아래처럼 ModelChoiceField와 함께 콤보 상자를 사용하고 싶습니다.Django ModelChoiceField

school = forms.ModelChoiceField(queryset=School.objects.all()) 

학교 개체에는 'id', 'Name', 'Domain'필드가 있지만 html로 양식을 렌더링하면 아래와 같이 표시됩니다.

<label for="id_school">School:</label> 
 
<select id="id_school" name="school"> 
 
<option value="" selected="selected">---------</option> 
 
<option value="3">School object</option> 
 
</select>

내가 첫 번째 행을 '이름'필드의 텍스트를 만들 수 있도록하고 싶습니다

선택합니다. 또한 나 같은 일부 참조 사이트가 있으면 좋을 것입니다!

감사합니다.

답변

1

School 개체가 렌더링되는 방법이므로 School object이 표시됩니다. School 모델에 아무것도 지정하지 않으면 django가 객체를 렌더링하는 방법입니다.

School 모델에 대해 __str__ 메서드를 정의해야합니다. 당신이 객체에 str()를 호출 할 때마다

__str__() 메서드를 호출 할 경우 : __str__() 방법으로 정의된다. Django는 여러 장소에서 str(obj)을 사용합니다. 특히, 으로 Django 관리 사이트에 객체를 표시하고 객체를 표시 할 때 을 템플릿에 삽입 한 값으로 표시합니다. 따라서 항상 은 __str__() 메서드에서 사람이 읽을 수있는 멋진 모델을 반환해야합니다.

class School(models.Model): 
    def __str__(self) 
     return self.name 

장고 문서에 대한 __str__.

0

당신은 기본적으로 선택한 첫 번째 객체를 원한다면 다음해야하므로 양식 모델에서 그런 일 : 당신은 당신이 할 수있는 모델의 인스턴스에서 초기 값을 설정하려면

school = forms.ModelChoiceField(queryset=School.objects.all(), initial=0) 

수락 가능 여부를 확인하십시오. SO accepted answer

관련 문제