I have a model which has a field 'keywords'. When I use a form to create/modify records, I am able to clean this field and then save it.
class ILProjectForm(forms.ModelForm):
    class Meta:
        models = ILProject
        fields = '__all__'
    def clean_keywords(self):
        k = self.cleaned_data.get('keywords')
        if k:
            k = ','.join([a.strip() for a in re.sub('\\s+', ' ', k).strip().split(',')])
        return k
However, I am not sure how to run clean() to update the data when I am using the list_editable option in the admin page.
I tried something like this bit I get an error saying I cannot set an attribute. What is the correct way to update the data after it has been cleaned?
class MyAdminFormSet(BaseModelFormSet):
    def clean(self):
        print(type(self.cleaned_data))
        recs = []
        for r in self.cleaned_data:
            if r['keywords']:
                r['keywords'] = ','.join([a.strip() for a in re.sub('\\s+', ' ', r['keywords']).strip().split(',')])
                print(r['keywords'])
            recs.append(r)
        self.cleaned_data = recs      <-- this part is problematic.
class ILProjectAdmin(...)
...
        def get_changelist_formset(self, request, **kwargs):
            kwargs['formset'] = MyAdminFormSet
            return super().get_changelist_formset(request, **kwargs)
 
    