2016-08-23 6 views
0

사용자가 다음과 같이 몇 가지 데이터를 입력하는 폼 마법사로 다단계 양식을 작성합니다. Step1 : 사용자가 드롭 다운에서 카테고리를 선택합니다 (일부 작업을 수행해야한다고 가정 함). 일종의 아약스 호출 여기에?), 하위 범주 드롭 다운이 나타납니다, 그는 다시 선택할 것이라고 다음 2 단계에 대한 동적으로 하위 범주에 따라 필드를 생성해야합니다.Django 폼 마법사 중첩 된 동적 필드 생성

#from models.py  
class Entity(models.Model): 
     name = models.CharField(max_length=255) 
     value_type = models.CharField(max_length=255, blank=True) 
     parent = models.ForeignKey('self', blank=True, null=True) 

모델 유스 케이스 예 :

name  value_type  parent 
Vehicles select   null 
Real estate select  null 
..... 
Cars  select   Vehicles 
Bikes  select   Vehicles 
..... 
Mercedes select   Cars 
Audi  select   Cars 
......... 
A4  null   Audi 
A5  null   Audi 

등 그래서 하위 카테고리의 각각은 상이한 미리 입력 된 값과 매우 다르며해야하는 모든 분야의 매우 특정한 세트를 갖는다 양식의 "2 단계"에서 하나씩 생성해야합니다. 자동차와 자동차를 1 단계에서 선택한다고 말하면 2 단계는 모델 드롭 다운 (Mercedes, Audi ...)을 말한 다음 Mercedes 모델 등으로 미리 선택한 항목에 따라 다른 드롭 다운이 나타나야합니다. 여러 단계가 있습니다. 여기에 설명 된 중첩 된 드롭 다운의. 1 주일 간 붙어있어 SO/Google의 도움을받지 못했습니다.

답변

0

jquery/javascript를 사용하여 비슷하지만 훨씬 덜 복잡한 작업을 수행했습니다. 사용자 정의 js 함수를 사용하여 필요한 필드를 표시하거나 사라지게 할 수 있습니다. 상단 필드가 Vehicle으로 설정된 경우 js는 다음 필드 등을 만들 수 있습니다.

브라우저에서 기본 출력을 검사하여 마법사가 찾고있는 필드 이름과 ID를 찾을 수 있습니다. 보통 nameyour_step_name-your_field_name이고 idid_your_step_name-your_field_name입니다.

또한 마법사의 donepost 메서드에서 사용자 지정 데이터 처리를 수행해야 할 수도 있습니다. 나는 마법사로 복잡한 일을 할 때마다이 두 가지를 거의 모두 덮어 쓴다.

바라건대 그게 도움이되기를 바랍니다. jquery를 기꺼이 사용하려는 경우 수행하려는 작업을 수행 할 수 있습니다.