2011-07-06 3 views
0

모델 :장고 - 드롭 문제로 렌더링 많은 분야에 많은

class ExpertLevel(models.Model): 
    level = models.CharField(max_length=100) 
    subject = models.ManyToManyField(Subject, blank=True, null=True) 

class Expert(models.Model): 
    appuser = models.ForeignKey(AppUser , unique=True) 
    level = models.ManyToManyField(ExpertLevel, blank=True, null=True) 

형태 :

class EditExpertForm(ModelForm): 
    class Meta: 
     model = Expert 
     fields = ('level',) 
     widgets = {'level': Select()} 

는 문제 : (전문가 모델) 레벨 필드 템플릿 렌더링 빈 선택은 포함되지 않습니다 (기본적으로 있어야 함).

documentation은 "모델 필드에 빈 = False 및 명시 적 기본값 (처음에는 기본값이 선택됨)이 있으면 빈 선택 항목이 포함되지 않습니다."라는 메시지가 표시됩니다. 여기서 빈 = True이면 .

이유가 무엇입니까 ?? 같은 페이지에 대한 자세한

답변

1

, 당신은 그것을 볼 수 있습니다 : 당신이 명시 적으로이 같은 양식 필드를 인스턴스화하는 경우

, 장고는 완전히 동작을 정의 할 수 있다고 가정합니다; 따라서 기본 특성 (예 : max_length 또는 required)은 해당 모델에서 가져 오지 않습니다. 모델에 지정된 비헤이비어를 유지하려면 양식 필드를 선언 할 때 관련 인수를 명시 적으로 설정해야합니다.

(이는 Overriding the default field types or widgets 장에 포함되어 있습니다.)

본인은이 문제에 관한 문서가 혼동 스럽다는 것에 동의합니다. 이러한 경고를 빠르게 읽는 경향이 있습니다 (다른 말로하면, 동일한 문제를 한 번 겪었으며 실제로 위젯 유형을 변경하는 경고를 실제로 이해하기 전에 문서를 몇 번 다시 읽어야했습니다)).

+0

좋아, 고마워.이 경우에는 다른 방법으로 ModelChoiceField를 사용하고 있었지만 잘 작동했습니다. – Neo

관련 문제