후속 조치 : How do you change the default widget for all Django date fields in a ModelForm?입니다.Django에서 특정 유형의 모든 내장 양식 필드에 대한 기본 위젯을 어떻게 수정합니까?
통제 범위를 벗어난 다른 개발자의 입력으로 커지면서 매우 많은 수의 모델 (예 : AZZZ)이 있고 모든 날짜 필드가 입력되는 방식을 변경하려는 경우 (예 : jQueryUI). 새로운 위젯을 사용하여 모든 날짜 필드를 채우는 가장 좋은 방법은 무엇입니까? 인용 질문에서
한 가지 제안을했다 : 그러나
def make_custom_datefield(f):
if isinstance(f, models.DateField):
# return form field with your custom widget here...
else:
return f.formfield()
class SomeForm(forms.ModelForm):
formfield_callback = make_custom_datefield
class Meta:
# normal modelform stuff here...
당신이 명시 ModelForm의의를 가지고 있지 않지만, URL 패턴이 직접 모델을 어디에서 온 수행이 가능하다? 즉, 귀하의 URL 설정이 likeso입니다 :
SomeModelA 백그라운드에서 장고에 의해 ModelForm으로 바뀌 모델 (안 양식) 그입니다입니다url(r'^A/?$', 'list_detail.object_list', SomeModelA)
.
현재 내 시스템에는 각 모델에 대한 양식이 없습니다. 양식을 명시 적으로 작성하는 유일한 방법은 이전 솔루션에서 제안 된 formfield_callback을 추가하는 것이지만 DRY 원칙에 위배되므로 오류가 발생하고 노동 집약적입니다.
필자는 (마지막 스레드에서 제안한대로) 특별한 위젯이 있고 내장 된 대신 내 필드를 사용하는 것으로 생각했습니다. 그다지 노동 집약적 인 것은 아니지만 오류가 발생할 수 있습니다 (그래도 좋은 grep으로는 해결할 수 없음).
제안 및 의견을 보내 주시면 감사하겠습니다.
티켓입니다 :
이 경우 ... 다른 위젯을 기본 강제의 예로서 HiddenInput을이보십시오. 고맙습니다. –굉장! 정말 고마워! – dfrankow