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) Пожалуйста, клонируйте репо и запустите

Ссылка находится здесь

Вернуться на верх