Как динамически изменять значение поля в зависимости от выбора в выпадающем списке в django

Я искал в Google, но не смог найти простой ответ на эту проблему: У меня есть django модель, которая хранит информацию о студентах и три другие модели, такие как:

class Level(models.Model):
   name = models.CharField(max_length=50)

class Pricing(models.Model):
   level = models.ForeignKey(Level, on_delete=models.PROTECT)
   price = models.PositiveSmallIntegerField(default=0)

class Enrollment(models.Model):
   student = models.ForeignKey(Student, on_delete=models.PROTECT)
   level = models.ForeignKey(Level, on_delete=models.CASCADE)
   date_enrolled = models.DateField()
   price = models.PositiveSmallIntegerField(default=0)

Я хочу, чтобы поле Enrollment.price заполнялось динамически в зависимости от значения поля Enrollment.price. В javascript это сводится к установке слушателя событий на Enrollement.level, но я не могу найти эквивалент в django.

hi вы можете изменить ваш метод сохранения, чтобы автоматически заполнять поле price из модели Level

Enrollment.level

class Enrollment(models.Model):
    student = models.ForeignKey(Student, on_delete=models.PROTECT)
    level = models.ForeignKey(Level, on_delete=models.CASCADE)
    date_enrolled = models.DateField()
    price = models.PositiveSmallIntegerField()
    
    def save(self,*args,**kwargs):
        self.price = Pricing.objects.get(level=self.level).price
        super().save(*args,*kwargs)

но я рекомендую переписать вашу модель как в примере выше, потому что она проста и вы можете получить доступ к цене каждого уровня напрямую например Enrollment.level.price

class Level(models.Model):
   level = models.CharField(max_length=50,unique=True)
   price = models.PositiveSmallIntegerField(default=0)

class Enrollment(models.Model):
    student = models.ForeignKey(Student, on_delete=models.PROTECT)
    level = models.ForeignKey(Level, on_delete=models.CASCADE)
    date_enrolled = models.DateField()

Надеюсь, это помогло вам

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