How to post prepopulated disabled ModelMultipleChoiceField?

I need my ModelMultipleChoiceField to be prepopulated with query parameters from GET-request ( /?extending=1&extending2 ). I know from this question that I can define get_initial() method for my view, returning my request. And everything works fine until I disable the ModelMultipleChoiceField , since I don’t need it to be mutable.

This is my ModelForm class deduced from this answer:

class ExtensionForm(forms.ModelForm):
    class Meta:
        model = Record
        fields = ['extending', 'name', 'description', 'picture', 'content', 'files']

    extending = forms.ModelMultipleChoiceField(queryset=Record.objects.all())

    def __init__(self, *args, **kwargs):
        if kwargs.get('instance'):
            initial = kwargs.setdefault('initial', {})
            initial['extending'] = [ for el in kwargs['instance'].extending.all()]

        forms.ModelForm.__init__(self, *args, **kwargs)
        self.fields['extending'].disabled = True

    def save(self, commit=True):
        instance =, False)

        old_save_m2m = self.save_m2m
        def save_m2m():
        self.save_m2m = save_m2m

        if commit:

        return instance

How do I update this class in order for my request to get there?

What specifically is not working for you? (What is not happening that you expect to have happen? Or what is happening that you’re not expecting to see?)

Side note: The disabled attribute on a form field prevents that field from being submitted with the form.