나는 내가 원하는 것에 대한 최선의 접근법을 찾고 있습니다. 그리고 나는 그것을 위해 약간의 도움을 사용할 수 있습니다.Django : formset의 양식마다 다른 양식 필드 위젯
나는 당신이 동일한 페이지에 하나의 모델 A와 몇 가지 모델 모두 B 년대를 편집 할 수있는 뷰를 생성 할 모델 A와 모델 B를 모델 B는
modela = forms.ForeignKey(Model a)
을 가지고 있습니다. 장고는 이것에 대한 포맷을 가지고 있으며 훌륭하게 작동합니다.
나는 하나의 세부 사항을 가지고 있지만, 사물을 조금 뒤죽박죽입니다. 즉 - 나는 위젯이나 모델 B 필드가 같은 객체의 이전 필드에서 어떤 선택을했는지에 따라 달라지기를 원합니다. 왜냐하면 - 유형에 따라 위젯은 날짜/시간 선택기 입력 또는 일반 텍스트 입력이어야합니다.
모델 B는 다음과 같습니다
class ModelB(models.Model):
m0odela = models.ForeignKey(ModelA)
target_value = models.CharField()
target_type = models.CharField(choices = (there are choices))
target_threshold = models.CharField()
내가 해당 formset에 대한 내 자신의 양식을 제공 할 수 있습니다 그리고 난 그 형태이 위젯 할당을 할 수있는 알고있다.
하지만 문제는 formset에 인스턴스/쿼리 세트가없는 경우 'target_type'이 forms 인스턴스로 설정되었는지 확인하지 못할 때입니다. 그래서 self.data 또는 self.initial 형식을 기반으로해야 할 것입니다. 그러나 self.initial도 form.__init__()
에 없습니다. 내가 할 수있는 일은 self.data이다 -하지만 원시 요청이다. POST 나 request.GET 데이터 - 'mymodelb_set-0-target_type'과 같은 모든 키를 포함하고있다.
그래서 여기에 약간의 손실이 있습니다. 일부 핵심 구문 분석을 수행하고 어떤 -target_type이 현재 양식에 속하고 선택한 값을 가져오고이 값을 기반으로 위젯을 할당해야하는지 파악해야합니까? 또는 BaseInlineFormSet의 자체 하위 클래스를 만들고 거기에 _construc_form을 재정의해야합니까? 그 양식은 ** kwargs의 관련 데이터로 초기 키를 갖습니다.
이전에 이런 종류의 문제가 발생 했습니까?
알란