Список Джанго, Основанный На Предыдущем Списке

#python #django

Вопрос:

Я пытаюсь составить динамический список вариантов. То есть выбор меняется на основе предыдущего ответа. Например, если country = ["USA", "Canada", "Mexico"] затем нажать «США», будет сгенерирован список из 50 штатов США, state = ["Alabama", "Alaska"] . Однако я попытался сделать утверждение if, которое, похоже, не сработало. Я не уверен, что это лучший вариант для этого.

 class Property(models.Model):
    address = CharField(max_length = 200)
    city = CharField(max_length = 200)

    COUNTRY_LIST = [
        ("USA", "United States"),
        ("CAN", "Canada")
    ]
    country = CharField(max_length = 3, choices = COUNTRY_LIST)

    USA_STATE_LIST = [
        ("AL", "Alabama"),
        ("AK", "Alaska"),
        ("AZ", "Arizona")
    ]
    CAN_STATE_LIST = [
        ("AL", "Alberta"),
        ("BC", "British Columbia")
    ]
    state = CharField(max_length = 2, choices = ?)
 

Комментарии:

1. Я бы сказал, чтобы поместить записи в отдельную таблицу под названием страна в базе данных, а затем использовать внешний ключ country_id для другой таблицы состояний. Таким образом, вы можете искать идентификатор страны в таблице государств.

2. Спасибо, не могу поверить, что я об этом не подумал.

Ответ №1:

Я думаю, нам, возможно, придется пересмотреть вашу модель.

государство

   class State(models.Model)
          name = models.CharField(max_length=100)
 

Страна

    class Country(models.Model)
          name = models.CharField(max_length=100)
 

и используйте это в модели свойств

 class Property(models.Model):
    address = CharField(max_length = 200)
    city = CharField(max_length = 200) 
    country = models.ForeignKey(Country,on_delete=Bla)
    state = models.ForeignKey(State,on_delete=Bla)