Django modelForm : динамическая настройка поля в зависимости от связанного поля

Я работаю над проектом больницы и задаюсь вопросом, как отобразить заданное поле (модель "врач") в зависимости от выбора специальности: пользователь должен сначала выбрать медицинскую специальность, и в соответствии с ней список врачей будет динамически обновляться.

Как я могу спроектировать свою модельФормы для достижения этой цели? Нужен ли мне какой-то javascript, встроенный в файл шаблона?

Вот соответствующий код в моем проекте django:

# models.py

class Speciality(models.Model):
    specialite_id = models.AutoField(primary_key=True)
    nom = models.CharField(max_length=50, unique=True, verbose_name="Spécialité")

    def __str__(self):
        return f"{self.nom}"

class Doctor(CustomUser):
    medecin_id = models.AutoField(primary_key=True)
    matricule_medecin = models.CharField(max_length=50, unique=True)  
    specialite = models.ForeignKey(Specialite, on_delete=models.CASCADE)
    admin = models.ForeignKey(Administrateur, on_delete=models.SET_NULL, null=Tru

e, blank=True)

    def __str__(self):
        return f"Dr {self.nom} {self.prenom}, spécialité : {self.specialite}"

# forms.py

class CreateSejour(forms.ModelForm):    
    class Meta:
        model = Sejour
        fields = '__all__'
        widgets = {'date_entree': forms.SelectDateWidget(years=range(2015, 2025)),
                   'date_sortie': forms.SelectDateWidget(years=range(2015, 2025)),
                   'motif': forms.Textarea()}

Я не понимаю, как решить эту ситуацию: мне нужно реализовать какую-то логику внутри modelForm или в представлении? Спасибо за помощь. De716

На самом деле я застрял на этом этапе, мой опыт работы с django не позволяет мне решить эту проблему, и у меня нет опыта работы с javascript

Если у вас нет никаких знаний о js, вам следует сделать многошаговую форму.
В первом представлении, которое обрабатывает вашу форму, добавьте условие, которое проверяет, являются ли отправленные значения действительными. Если да, то используйте redirect() для второго шага. Я рекомендую разбить его на отдельные представления и ModelForms.

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