ModelForm
클래스를 사용하여 두 필드를 ChoiceField
으로 설정했습니다. 내보기 중 하나를 위해, 나는 (지금처럼) 데이터베이스에 내 모델의 인스턴스를 가져옵니다 내 ModelForm
클래스의 양식을 작성하고 싶습니다 : 나는이 작업을 수행 할 때Django ModelForm ChoiceField 인스턴스 데이터를 표시하지 않습니다.
form = MyModel(instance=model_instance)
을하고 폼을 렌더링 템플릿에서 필자는 대부분의 필드에 모델 인스턴스에서 가져온 값이 미리 채워져 있다는 것을 알았습니다. 이는 내가 원하는 것입니다. 그러나 이는 두 개의 ChoiceField
필드에 해당하지 않습니다. 이 옵션은 특정 옵션이 선택되지 않은 드롭 다운 선택 메뉴로 렌더링됩니다.
내 ModelForm 클래스에서 두 필드를 ChoiceField
-type으로 정의하지 않으면 HTML의 일반 텍스트 입력 필드로 렌더링되고 데이터베이스 값을 사용하여 미리 채워집니다. 그러나 HTML에서 선택 옵션 입력 필드로 표시되도록 정의하면 아무 것도 미리 선택되지 않습니다. 데이터베이스의 값이 미리 선택되도록 변경할 수 있습니까?
편집 :
class App(models.Model):
CODES = (
(u'a',u'annual'),
(u'm',u'monthly'),
(u'w',u'weekly')
)
code = models.CharField(max_length=1, choices=CODES)
start_time = models.TimeField(blank=True, null=True)
end_time = models.TimeField(blank=True, null=True)
class AppForm(ModelForm):
CODES = (
(u'',u'Please select code'),
(u'a',u'annual'),
(u'm',u'monthly'),
(u'w',u'weekly')
)
TIMES = (
(u'00:00',u'All Day'),
(u'12:00',u'Noon')
)
start_time = forms.ChoiceField(required=False, choices=TIMES)
end_time = forms.ChoiceField(required=False, choices=TIMES)
code = forms.ChoiceField(choices=CODES, label='Type')
class Meta:
model = App
는 흥미롭게도, code
필드가 HTML로 렌더링 할 때 잘 미리 선택된 모델 인스턴스 값이 : 여기에 요청으로 내 모델과 양식에 대한 코드입니다. 모델 정의에서 choices
인수를 사용하면 차이가 있습니까?
UPDATE :
a = App.objects.get(id=16)
a.start_time
내가 datetime.time(12, 0)
같은 값을 얻을 : 난 그냥 내가 지금처럼 python manage.py shell
에 App
인스턴스를 당기면 것으로 나타났습니다. 하지만 장고 관리자는 App
인스턴스를 모두 볼 때 (None)
을 start_time
및 end_time
아래에 표시합니다. 왜 그랬을까요?
가능한 중복 http://stackoverflow.com/questions/624265/how-do-i-make-a-django -modelform-menu-item-selected-by-default) 및 더 많은 것. –
모델과 양식에 코드를 게시 할 수 있습니까? 감사. – Amyth
@Hedde, 기본 선택 옵션이 필요하지 않습니다. 선택한 옵션을 객체 인스턴스에서 가져 오려고합니다. 당신은 저를 위해 작동하지 않았기 때문에 저 다른 질문에 대한 답을 실제로 받아 들였습니다. – GChorn