save() prohibited to prevent data loss due to unsaved related object 'user'. в чем ошибка?

для редактирования пользователя добавил модель Profile которая связана с моделью пользователя, при регистрации пользователя получаю ошибку save() prohibited to prevent data loss due to unsaved related object 'user' , если переношу сохранение объекта а потом создание объекта Profile , оно регистрирует , но видимо не сохраняет что-то в базу данных , т.к при попытке войти пишет что такоего юзера нет . По идее ошибка в функции регистрации , буду признателен за подсказку где и как это правильно организовать.

views.py

def register(request):
    if request.method == 'POST':
        user_form = UserRegistrationForm(request.POST)
        if user_form.is_valid():
            new_user = user_form.save(commit=False)
            new_user.set_password(user_form.cleaned_data['password'])
            Profile.objects.create(user=new_user)
            new_user.save()
            #vnew_profile = Profile.objects.create(user=new_user)
            # new_profile.save()

            return render(request, 'registration/register_done.html', {'new_user': new_user})

    user_form = UserRegistrationForm()
    return render(request, 'registration/register.html', {'user_form': user_form})

models.py

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    date_of_birth = models.DateField(blank=True, null=True)
    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)

    def __str__(self):
        return 'Profile for user {}'.format(self.user.username)

forms.py

class UserRegistrationForm(forms.ModelForm):
    password = forms.CharField(label='password', widget=forms.PasswordInput)
    password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'email')

    def clean_password(self):
        cd = self.cleaned_data
        if 'password' in cd and 'password2' in cd and cd['password'] != cd['password2']:
            raise forms.ValidationError('Bro passwords don\'t match , try again ;)')
        return cd


class UserEditForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')


class ProfileEditForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('date_of_birth', 'photo')

Ответы (0 шт):