Как динамически изменять значение поля в зависимости от выбора в выпадающем списке в 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()
Надеюсь, это помогло вам