저는 현재 문제가있어 매우 사소한 것을 간과 할 가능성이 있습니다. 내 모델에는 체크 박스 양식을 통해 여러 선택 항목을 허용해야하는 필드가 있습니다 (최종 사용자가 볼 수있는 양식 영역의 관리 화면에서 확인란이 될 필요는 없습니다). 현재 내가 필드 설정과 같이이 있습니다Django ModelForm CheckBox 위젯
# Type of Media
MEDIA_CHOICES = (
('1', 'Magazine'),
('2', 'Radio Station'),
('3', 'Journal'),
('4', 'TV Station'),
('5', 'Newspaper'),
('6', 'Website'),
)
media_choice = models.CharField(max_length=25,
choices=MEDIA_CHOICES)
내가 그를 가지고 있지만 그것의 형태로 체크 박스 선택 필드를 확인해야합니다. ModelForm을 만들 때 드롭 다운 상자를 원합니다. 그래서 자연스럽게 그 필드를 무효화하고, 내가 원하는 체크 박스를 얻습니다. 그러나 양식이 제출되면 관리 화면을 볼 때 유용한 내용이 저장되지 않은 것처럼 보입니다. 그러나 데이터베이스는 내가 선택한 것들이 여러 개 있다는 것을 보여 주지만 긍정적 인 신호이다. 그러나 어떻게하면 관리 화면에 제대로 반영 할 수 있습니까?
편집 : FWIW 문서 링크를 대답으로 기꺼이 받아 들일 것입니다.
팁 주셔서 감사합니다. ManyToMany를 사용하고 싶지 않았습니다. 왜냐하면 항상 정적 인 정보를 위해 약 6 개의 모델을 만들려고했기 때문입니다. 불필요한 것으로 보입니다. – f4nt
또한 fwiw, 작동하지 않는 것 같습니다. CheckBoxSelectMultiple 폼을 사용할 때 필드가 공백으로 렌더링됩니다. MultipleChoiceField를 사용하는 경우 Checkbox widget이 작동합니다. 그러나 선택 목록이있는 양식을 제공해야합니다. 그런 다음 오버라이드 된 정리 기능으로 데이터를 다시 매핑해야합니다. 어쩌면 그게 올바른 방법 일 수도 있지만 잘못된 느낌이 들며 일반적으로 어떤 것이 "잘못 느껴질 때"입니다. 내가 여기서 과용하지 않는다는 것을 증명하려고 노력한다. Models.py에서 : MEDIA_TYPE = models.ManyToManyField (MediaChoice) Forms.py에서 : 데프 __init__ – f4nt
잘 나는 그러나 지금은이 있고, 바로이 날을 설정 주셔서 감사합니다, 그래서 바로 그 일을하지 않은 (self, * args, ** kwargs) : super (MediaContactForm, self) .__ init __ (* args, ** kwargs) self.fields [ 'media_type']. 위젯 = forms.CheckboxSelectMultiple() – f4nt