2015-04-05 2 views
5

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

class Location(models.Model) continent = models.CharField(max_length=20) country = models.ForeignKey(Country)

Мне нужно создать зависимое выпадающее меню, так что, когда я выбираю континент я получаю все страны, принадлежащие к этому континенту , Как я должен это делать?

ответ

5

Ты прочитал (а) the documentation? Это довольно просто. В зависимости от того, как вы создали свой континент/страну. Я бы рекомендовал что-то вроде django-cities-light, которое предоставляет вам таблицы, заполненные странами/регионами. Я не думаю, что это континенты.

Если вы не хотите, чтобы сделать это, вам нужно создать модель страны, которая имеет столбец Continent ID, например:

Continent(models.Model): 
    name = models.CharField() 

Country(models.Model): 
    name = models.CharField() 
    continent = models.ForeignKey(Continent) 

Тогда в модели Расположение установите поля таким образом:

from smart_selects.db_fields import ChainedForeignKey 

Location(models.Model): 
    newcontinent = models.ForeignKey(Continent) 
    newcountry = ChainedForeignKey(
     Country, # the model where you're populating your countries from 
     chained_field="newcontinent", # the field on your own model that this field links to 
     chained_model_field="continent", # the field on Country that corresponds to newcontinent 
     show_all=False, # only shows the countries that correspond to the selected continent in newcontinent 
    ) 

Из документов:

Этот пример asumes, что страна Модель имеет континент = ForeignKey (Continent) поле ,

Прикованное поле является полем на той же модели, что и поле должно быть прикованным. Прикованное поле модели - это поле цепной модели, которое соответствует модели, связанной также цепным полем.

Надеюсь, что имеет смысл.

3
  1. пункт установить Django-смарт-выбирает
  2. Добавить smart_selects в свой INSTALLED_APPS

  3. свяжи smart_selects URLs в urls.py. вашего проекта Это , необходимый для цепочки выбора и набора из нескольких вариантов. Для примера

  4. Ваши Модели Models

  5. Index.html Index

Смежные вопросы