이 당신의 ModelForm 정의에 override the default field types이다 수행하는 일반적인 방법을 무시합니까.
당신이 모델에하여 DateField이 있다면 아래 예제는 작동합니다
는 (나는 내가 초에 다시 그에게 올거야 ... 당신이 DateTimeField를 참고). 일반적으로 지정된 것과 동일한 필드 유형을 지정하게되지만 양식 필드 생성자에 다른 위젯을 전달합니다.
from django.db import models
from django import forms
from django.forms.extras import SelectDateWidget
class MyModel(models.Model):
a_date_field = models.DateField()
class MyModelForm(forms.ModelForm):
a_date_field = forms.DateField(widget=SelectDateWidget())
class Meta:
model = MyModel
내 지식, 장고 1.0.x.에서 DateTimeField
제공 상응하는 위젯, 없다 이 경우 SelectDateWidget
의 하위 클래스로 사용자 정의 위젯을 만들고 싶을 것입니다. 나는 SelectDateTimeWidget
에있는 빠른 google에서 당신이 찾고있는 위젯 인 것처럼 보이는 것을 만들고있는 몇몇 다른 사람들이 있다는 것을 주목합니다. 나는 그것들을 사용하지 않았기 때문에 emptor는주의해야하지만, this SelectDateTimeWidget patch과 같은 것이 시작하기에 좋은 장소 일 수 있습니다.
편집합니다 ModelFormset 또는 InlineModelFormset를 사용하는 경우, 당신은 여전히 inlineformet_factory
기능에 form=MyModelForm
를 전달하여이를 달성 할 수
두 모델의 formset 공장 실제로 일반
formset_factory
생성자를 호출하기 때문에이 작동
MyModelFormset = inlineformset_factory(MyParentModel, MyModel, form=MyModelForm)
자신의 구현에서. 그것은 문서에 명시 적으로 명시되지 않았기 때문에 알아 내기가 조금 힘듭니다 ... Django 문서는 모델 formset 팩토리가 정상 formset_factory를 확장한다는 것을 언급하여이 기능을 언급합니다. 내가 의심 스러울 때마다 django/forms/models.py
을 열어 formset 팩토리 함수의 전체 서명을 확인합니다.
감사 회신, 그러나 나는 양식을 초기화 할 inlineformset 사용하고 있음을 언급하는 것을 잊었다. 나는 또한 질문을 편집했다. – crashekar
걱정할 필요가 없습니다 ... 답변을 업데이트했습니다. –
좋은 답변입니다. 하지만 ... "금지"는 "금지 된"것을 의미합니다 - 나는 그것이 당신이 의미하는 것이라고 생각하지 않습니다. 아마도 "처방 된"것은 당신이 찾고있는 의미에 더 가깝습니다. –