docs: def get_form(self, request, obj=None, **kwargs):
          """
          Build the form used for changing the model.
          """
          widgets = kwargs.pop('widgets', {})
          labels = kwargs.pop('labels', {})
          glossary_fields = kwargs.pop('glossary_fields', self.glossary_fields)
          widgets.update(glossary=JSONMultiWidget(glossary_fields))
          labels.update(glossary='')  # remove label for glossary, since each subfields provides a label itself
          kwargs.update(widgets=widgets, labels=labels)
          form = super(CascadePluginBase, self).get_form(request, obj, **kwargs)
          # help_text can not be cleared using an empty string in modelform_factory
          form.base_fields['glossary'].help_text = ''
          if request.method == 'POST':
              is_shared = bool(request.POST.get('shared_glossary'))
              for field in glossary_fields:
                  if not (is_shared and field.name in self.sharable_fields):
                      form.base_fields['glossary'].validators.append(field.run_validators)
          form.glossary_fields = glossary_fields
          return form