Проблемы с django Group formsets

Я пытаюсь реализовать групповую форму, где выбор в поле модели будет определять варианты в другом поле.

models.py

class RechargeData(models.Model, Main):
          user = models.ForeignKey(User, default=1,on_delete=models.CASCADE)
          mobile_number = models.CharField( max_length=11) # validators should be a list
          type = models.CharField(choices=Main.TYPES, max_length=10)
          operator = models.CharField(max_length=15)
          circle = models.CharField(max_length=20)
          plan = models.DecimalField(max_digits=6, decimal_places=2)
          timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
          plan_id = models.DecimalField(max_digits=6, decimal_places=2)
          network_id = models.DecimalField(max_digits=6, decimal_places=2)
          api_development_no = models.CharField(max_length=15) 

          class Meta:
              ordering = ["-timestamp"]

fields.py

class GroupedModelChoiceField(ModelChoiceField):
    def __init__(self, *args, choices_groupby, **kwargs):
        if isinstance(choices_groupby, str):
            choices_groupby = attrgetter(choices_groupby)
        elif not callable(choices_groupby):
            raise TypeError('choices_groupby must either be a str or a callable accepting a single argument')
        self.iterator = partial(GroupedModelChoiceIterator, groupby=choices_groupby)
        super().__init__(*args, **kwargs)

forms.py

class RechargeDataForm (forms.ModelForm):

    class Meta:
        model = RechargeData
        fields = ['mobile_number', 'type', 'operator', 'circle', 'plan']

class GroupedRechargeDataForm(forms.ModelForm):
    operator = GroupedModelChoiceField(queryset=operator.objects.exclude(operator=None), choices_groupby='operator')

    class Meta:
        model = RechargeData
        fields = ['mobile_number', 'type', 'operator', 'circle', 'plan']

Вывод формы дает другой результат, получая только поле оператора, созданное в модели, но я пытаюсь вывести остальную форму на основе выбора оператора. например.

если пользователь выбирает Mtn в качестве оператора, то цикл, план, тип, network_id, plan_id будут только извлекать все конкретные поля в моделях, созданных и привязанных к MTN, если выбран Airtel, то выбор в других формах должен быть основан только на airtel. Я использовал Queresets, так как администратору придется сначала создать объекты модели, прежде чем пользователи выберут запрашиваемые объекты в форме пользователя.

Я не получил желаемого результата с этим кодом выше, и любая помощь будет высоко оценена.

Чтобы упростить задачу, если вы не хотите использовать js.

Создайте другую модель под названием Operator, затем добавьте цикл, план, тип, network_id, planan_id как поля к этой модели.

Тогда в RechargeData модели сделайте operator поле с иностранным ключом для Operator модели

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