모델에 CharField with
choices
이 있었지만이 필드 렌더링을 위해 양식 클래스에 목록을 반환하는 CheckboxSelectMultiple
으로 렌더링해야합니다. TypedChoiceField
양식 클래스는 자동으로 Field
에 할당되며 선택 사항은 유효하지 않습니다. 필드에서 form_class
을 변경하고 목록을 확인하기 위해 TypedMultipleChoiceField
form_class
이라는 새 필드를 작성했습니다.TypedChoiceField를 양식 필드로 지정하여 모델 필드에 선택 항목을 어떻게 할당합니까?
class MultipleTypedChoiceModelField(models.Field):
def get_internal_type(self):
return 'MultipleTypedChoiceModelField'
def formfield(self, **kwargs):
defaults = {'form_class': TypedMultipleChoiceField, }
defaults.update(kwargs)
return super(MultipleTypedChoiceModelField, self).formfield(**defaults)
그러나 효과가 없습니다. 모델 필드에서 선택 사항을 주석 처리 한 경우 유형은 MultipleTypedChoiceModelField입니다. 그래서 form_class는 선택 목록의 목록으로 어플라이언스에서 임명되었다고 생각한다.
def formfield(self, **kwargs):
if self._choices: # or self.choices:
defaults = {'form_class': TypedMultipleChoiceField, }
defaults.update(kwargs)
return super(MultipleTypedChoiceModelField, self).formfield(**defaults)
하지만 효과가 없습니다. form_class
의 배정 위치를 찾지 못했습니다. 어쩌면 나는이 행동을 바꾸는 더 좋은 방법이 있을까? 많은 관계가 많은 추가 모델을 추가하는 것은 분명히 필요하지 않기 때문에 계획하지 않습니다.
myfield = models.CharField(max_length=100, choices=MY_FIELD_CHOICES)
장고가 myfield을 가정하는 것입니다 단지 한 선택, 너트 여러 선택을 원하는 분야 문제의