2011-10-31 6 views
2

두 모델 선택 필드가있는 모델이있는 경우 두 번째 필드의 선택 세트를 첫 번째로 선택한 것에 종속되게하는 방법이 있습니다. 예를 들어, 다음 코드가 주어지면 사용자는 "회사"필드에 대해 APPLE을 선택합니다. 사용자가 자신의 "부서"필드 선택 항목에 대해서만 APPLE DIV_CHOICES를 제공하도록 코드를 구성 할 수 있습니까?조건부/우발적 모델 필드 선택

CMP_CHOICES ('Apple', 'Apple Computers'), 
      ('MS', 'Microsoft Inc.'), 

APPLE DIV_CHOICES ('Desktop', 'Desktop'), 
      ('iOS', 'iOS'), 
      ('AS', 'AppStore'), 

MS DIV_CHOICES ('Windows', 'Windows'), 
      ('Longhorn', 'Longhorn'), 
      ('Mobile', 'Mobile'), 

class Contact(models.Model) 
first_name = models.CharField(max_length=64, …) 
last_name = models.CharField(max_length=64, …) 
company = models.CharField(max_length=100, choices=CMP_CHOICES) 
division = models.CharField(max_length=100, choices=DIV_CHOICES) 
.... 

답변

3

아니요 가능한 모든 선택 사항을 선택해야합니다. 그러나 폼에서 JavaScript를 사용하여 첫 번째 선택 항목을 기반으로 선택 항목을 제한 할 수 있지만 모델 자체에서는 선택할 수 없습니다.

+0

저는 본질적으로 똑같은 말을 할 때 하나의 대답이나 다른 대답을 받아들이는 방법을 잘 모릅니다. 둘 다 고마워. – kjarsenal

2

Django 관리자 또는 자신의 사용자 정의 코드를 사용하는지 여부에 따라 달라 지지만 작동하지 않는 여러 가지 방법이 있습니다. 양식의 모든 항목은 기본적으로 선택할 수 있습니다.

이 작업은 모델이 아닌 양식 수준과 템플릿 수준에서 수행됩니다. django form wizard을 만들어 여러 단계로 양식을 표시 할 수 있습니다. 또는 CMP 필드를 선택한 후에 javascript를 사용하여 APPLE/MS 필드 만 표시 할 수도 있습니다. 더 좋아질 수 있고 CMP가 선택되고 유효화 된 후에 APPLE/MS 필드를 동적으로로드하기 위해 일부 아약스를 할 수 있습니다.