динамический комбинированный список в админке django - PullRequest
0 голосов
/ 19 января 2012

У меня следующая проблема, у меня есть пять классов: континент, страна, Штат, город и клиент, класс Customer хотел бы получить список страны будут взиматься в зависимости от выбранного континента, а также государства в соответствии с выбранной страной, а города в соответствии с выбранным состоянием. Все это в АДМИН. Я хотел бы помочь в качестве примера.

# 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') 

Ответы [ 2 ]

4 голосов
/ 19 января 2012

Django Smart Selects , скорее всего, сделает это за вас.Из README:

Если у вас есть следующая модель:

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

, и вы хотите, чтобы все страны были сгруппированы по континенту и чтобы группы использовались в выбранном изменении для следующего:

from smart_selects.db_fields import GroupedForeignKey

class Location(models.Model)
    continent = models.ForeignKey(Continent)
    country = GroupedForeignKey(Country, "continent")
1 голос
/ 19 января 2012

Я думаю, что нет способа достичь этого напрямую с Джанго.Попробуйте с AJAX и JQuery.

...