Django Models: Как добавить два списка опций таким образом, чтобы один зависел от другого
У меня есть две модели в приложении salesnetwork
, как показано ниже.
salesnetwork.models:
class Provinces(models.Model):
name = models.CharField(max_length=255, db_collation="utf8mb3_unicode_ci")
class Meta:
db_table = "provinces"
def __str__(self):
return self.name
class Cities(models.Model):
province = models.ForeignKey("Provinces", models.DO_NOTHING)
name = models.CharField(max_length=255, db_collation="utf8mb3_unicode_ci")
class Meta:
db_table = "cities"
def __str__(self):
return self.name
В другом приложении под названием core
у меня есть модель для контактной формы, как показано ниже:
core.models:
class ContactUsFormModel(models.Model):
first_name = models.CharField(max_length=200, blank=False, null=False)
last_name = models.CharField(max_length=200, blank=False, null=False)
# province = Provinces //How to add Provinces?
# // TODO add phone number field
# phone_number = models.IntegerField(max_length=11)
email = models.EmailField(blank=False, null=False)
subject = models.CharField(max_length=250, blank=False, null=False)
message_body = models.TextField()
def __str__(self):
return self.subject
Я использую эту модель для создания ModelForm
как показано ниже:
core.forms:
class ContactForm(ModelForm):
class Meta:
model = ContactUsFormModel
fields = "__all__"
widgets = {
"first_name": forms.TextInput(
attrs={
"class": "form-control",
"placeholder": "First name",
"required": "True",
}
),
"last_name": forms.TextInput(
attrs={
"class": "form-control",
"placeholder": "Last name",
"required": "True",
}
),
"email": forms.EmailInput(
attrs={
"class": "form-control",
"placeholder": "email@address.com",
"required": "True",
}
),
"subject": forms.TextInput(
attrs={
"class": "form-control",
"placeholder": "Subject",
"required": "True",
}
),
"message_body": forms.Textarea(
attrs={
"class": "form-control",
"placeholder": "Write your message here.",
"required": "True",
}
),
}
Теперь задача состоит в том, чтобы добавить поле Province
и City
к ContactUsFormModel в core.models, так чтобы в конечной форме front-end у меня было два select-меню, в которых одно будет для провинции, и после выбора поля провинции автоматически обновлялся список городов.
Я предполагаю, что мне нужно добавить модели Provinces
и Cities
в форму Model, затем запросить их в представлении и отправить данные в шаблон. Но я не знаю, как это сделать. Буду очень признателен за пошаговое руководство.
P.S. 1: Что касается того, что имена salesnetwork.model Provinces
и Cities
являются множественными, эти имена были автоматически сгенерированы с помощью команды django inspectdb
, и поскольку я не был уверен, смогу ли я их изменить, я оставил их такими.
P.S. 2: Возможно, на этот вопрос уже был дан ответ в другой теме, но поскольку я не знаю, в какой теме мне искать и учиться, мне пришлось задать этот вопрос.
Я создал выпадающий список Depend с внешним ключом с двумя моделями (MainCategoryModel) / (Subcategory Model) Пожалуйста, клонируйте репо и запустите
Ссылка находится здесь