2012-01-19 26 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

これはDjangoで直接達成する方法がないと思います。 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を使用しようとしましたが、インラインdjango管理者の変更にいくつかのバグがありました。 Jquery/Ajaxを使用した例をご希望ですか?助けてくれてありがとう。 – user1159006

+0

Django Smart Selectは、あなたがやりたいことを正確に行います。サンプルのソースコードをチェックしたいと思います。 Django Smart Selectsを使用すると、どんな問題に遭遇しますか? –

+0

JQueryインラインモード(およびTabularInline StackedInline)をロードする時間。オプションで動作するのは「余分な」だけです。例: "Extra = 2"、レジスタで1と2が実行されますが、 新しいアカウントを追加した場合は実行されません。 – user1159006