2012-01-19 6 views
0

대륙, 국가, 주,시 및 고객, 고객 클래스는 선택한 대륙을 기준으로 국가의 목록을 청구하려고합니다. 다음과 같은 문제가 있습니다. , 선택된 국가에 따라 상태 및 선택한 상태의 에 따라 도시가 표시됩니다. 이 모든 것은 ADMIN에 있습니다. 예를 들어 을 돕고 싶습니다.django의 동적 콤보 박스

# models.py: 

class Continent(models.Model): 
    name_co = models.CharField(max_length=50, unique=True, verbose_name='continent') 

class Country(models.Model): 
    name_cy = models.CharField(max_length=50, unique=True, verbose_name=u'country') 
    continent_cy = models.ForeignKey(Continent, verbose_name=u'continent') 

class State(models.Model): 
    name_st = models.CharField(max_length=50, verbose_name=u'state') 
    country_st = models.ForeignKey(Country, verbose_name=u'country') 

class City(models.Model): 
    name_ci = models.CharField(max_length=50, verbose_name=u'city') 
    state_ci = models.ForeignKey(State, verbose_name=u'state') 

class Customer(models.Model): 
    name_cu = models.CharField(max_length=50, verbose_name=u'name') 
    continent_cu = models.ForeignKey(Continent, verbose_name='continent') 
    country_cu = models.ForeignKey(Country, verbose_name=u'country') 
    state_cu = models.ForeignKey(State, verbose_name=u'state') 
    city_cu = models.ForeignKey(City, verbose_name=u'city') 

답변

1

장고와 함께 직접 구현할 방법이 없다고 생각합니다. AJAX와 jQuery를 사용해보십시오.

4

Django Smart Selects 가능성이 가장 높습니다. 의 README에서 :

다음과 같은 모델이있는 경우 :

from smart_selects.db_fields import GroupedForeignKey 

class Location(models.Model) 
    continent = models.ForeignKey(Continent) 
    country = GroupedForeignKey(Country, "continent") 
:

class Location(models.Model) 
    continent = models.ForeignKey(Continent) 
    country = models.ForeignKey(Country) 

을 그리고 당신은 모든 국가가 대륙별로 그룹화되어 원하는 그룹은 다음에 변경을 선택에 사용되는

+0

django-smart-select를 사용해 보았습니다. 인라인 장고 관리자가 변경되는 방식에 몇 가지 버그가있었습니다. Jquery/Ajax를 사용하는 예제를 원하십니까? 도와 주셔서 감사합니다. – user1159006

+0

Django Smart Select는 원하는 작업을 정확히 수행합니다. 예를 들어 소스 코드를 확인해 보겠습니다. Django Smart Selects를 사용하여 정확히 어떤 문제가 발생합니까? –

+0

JQuery 인라인 모드 (및 TabularInline StackedInline)를로드하는 시간이며 옵션에서 작동하는 것은 "추가"로 설정됩니다. 예 : "Extra = 2", 레지스터에서 1과 2가 실행되지만, 새 계정을 추가하는 경우에는 실행되지 않습니다. – user1159006