validation – How to pass request.user with a ManyToMany Field in Django

I have two models Exercise and Area, Area has a manytomanyfield back to Exercise:

class Exercise(models.Model):
    user = models.ForeignKey(Profile, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)

class Area(models.Model):
    user = models.ForeignKey(Profile, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    exercise = models.ManyToManyField(Exercise, blank=True)

I want the user to be able to create a new exercise that automatically attaches to its specific area, and also passes in request.user. Here is my view:

from .forms import ExerciseForm as e_form

class ExerciseFormView(CreateView):
    form_class = e_form
    success_url = '/'

    def form_valid(self, form):
        area = Area.objects.get(pk=self.kwargs("area_id"))
        new_ex = Exercise.objects.latest('id')
        new_ex.user = self.request.user
        form.instance.user = self.request.user
        return JsonResponse({'exercise': model_to_dict(new_ex)}, status=200)

And its registered url:

path('exercise-add-new/<int:area_id>/', ExerciseFormView.as_view(), name='exercise_add_new'),

I should add that this used to work until I recently added user as a field to the Exercise model, and new_ex.user = self.request.user to the view. Now when I try to submit the form nothing happens. No errors, and no objects are created. I have tried new_ex.user = self.request.user and form.instance.user = self.request.user and still nothing happens.

Btw my user attributes are a ForeignKey to the auth user model:

from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)