Djnago Группа CheckboxSelectMultiple
Я хочу создать зависимые поля выбора. Например, если я выберу PROCEEDING_CHOICES[0][1]
модели Card, я не смогу выбрать ни один из вариантов поля first_dispute
. Другая ситуация: если я выбираю CHOICES[1][1]
из модели FirstDispute, я не могу продолжить работу с полем second1_dispute
.
Как это реализовать?
models.py
class FirstDispute(models.Model):
CHOICES=(
('1', '01 О заключении, изменении и расторжении договоров'),
('2', '02 О недействительности сделок'),
('3', '03 О неисполнении или ненадлежащем исполнении обязательств по договорам'),
...
)
value = models.CharField("Категория спора (подкатегория 1):", max_length=122, choices=CHOICES, default=CHOICES[0][1])
def __str__(self):
return self.value
class Card(models.Model):
PROCEEDING_CHOICES =(
('Административное', 'Административное'),
('Интеллектуальное', 'Интеллектуальное'),
('Экономическое', 'Экономическое'),
)
SECOND1_DISPUTE = (
('None', 'Выбирается при значения "Подкатегория 1" - "01 О заключении, изменении и расторжении договоров"'),
('01.01 о понуждении к заключению договора', '01.01 о понуждении к заключению договора'),
...
)
proceeding = models.CharField("Вид судопроизводства:", max_length=16, choices=PROCEEDING_CHOICES, default=PROCEEDING_CHOICES[0][1])
first_dispute = models.ManyToManyField(FirstDispute)
second1_dispute = models.CharField("Категория спора (подкатегория 2-1)", max_length=122, choices=SECOND1_DISPUTE, blank=True, null=True)
filters.py
class CardFilter(django_filters.FilterSet):
proceeding = django_filters.MultipleChoiceFilter(choices=Card.PROCEEDING_CHOICES, label="Вид судопроизводства (выберите подходящее значение)", widget=forms.CheckboxSelectMultiple())
first_dispute = django_filters.MultipleChoiceFilter(choices=FirstDispute.CHOICES, label="Первая подкатегория спора (выберите подходящее значение)", widget=(forms.CheckboxSelectMultiple()))
second1_dispute = django_filters.MultipleChoiceFilter(choices=Card.SECOND1_DISPUTE, label="Вторая (1) подкатегория спора (выберите подходящее значение)", widget=(forms.SelectMultiple()))
class Meta:
model = Card
fields = [ 'first_dispute']