я создал эти модели:Джанго: Динамические встроенные формы с фильтром при выборе пользователем
class Service(models.Model):
name = models.CharField(blank=False, max_length=200)code here
class Monitor(models.Model):
name = models.CharField(blank=False, max_length=100)
services = models.ManyToManyField(Service, related_name='monitors')
class Student(models.Model):
name = models.CharField(blank=False, max_length=100)
class ServiceMonitors(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
service = models.ForeignKey(Service, on_delete=models.CASCADE)
monitors = models.ManyToManyField(Monitor)
Эти модели представляют собой компании, которые предлагают множество услуг для студентов. Мониторы, которые работают для этой компании, назначаются студентам, которым нужна услуга, которую они предлагают. Монитор может предложить множество услуг и иметь много студентов для каждого из них. Кроме того, у студента может быть много услуг и мониторов.
Предположим, что у нас есть 3 службы, s1, s2 и s3. Когда мы создаем новый монитор, мы назначаем ему некоторые из этих услуг, скажем, s1 и s3. Затем, когда мы создаем нового студента, мы должны иметь возможность выбирать, какие услуги и мониторы у него будут иметь.
Моя проблема в том, что мне нужно, чтобы создать форму студента (имя, телефон, и т.д. ...), что позволяет мне:
- Выберите услугу управления ниспадающего
- После услуга выбрана, в форме должны отображаться мониторы, предлагающие эту услугу, поэтому я могу выбрать один или несколько из них (флажки).
- Кнопка A +, чтобы создать/показать новую форму, чтобы повторить процесс, поэтому я может выбрать новую услугу и соответствующие мониторы.
Я очень новичок в Django. Я смог создать встроенную форму в форме создания пользователя, но я застрял здесь. У меня теперь есть выпадающий элемент управления для выбора службы и ModelMultipleChoiceField с виджем CheckboxSelectMultiple, который показывает все мониторы. Отсюда я должен знать, как фильтровать эти мониторы, когда пользователь выбирает услугу, и как добавлять новые формы для выбора новых сервисов/мониторов.
Спасибо, Дон, я думаю, что я попробую это с помощью специальных форм и некоторых JS. Попробует показать все службы как флажки и показать связанные мониторы, когда пользователь выбирает услугу. Таким образом, я могу отправить всю информацию, фильтрованную на клиентскую сторону. – ESS