def METHOD_NAME(self, form):
    # We put the entire function inside a transaction
    # This makes sure that `user` and `profile` are created in the same transaction
    # It also delays the sending of emails until the transaction is committed
    # (sending emails can cause error, resulting in an unclean database)
    # See https://github.com/macropin/django-registration/blob/v2.9/registration/models.py#L188-L193
    user = super(RegistrationView, self).METHOD_NAME(form)
    profile, _ = Profile.objects.get_or_create(user=user, defaults={
        'language': Language.get_default_language(),
    })
    cleaned_data = form.cleaned_data
    user.first_name = cleaned_data['full_name']
    profile.timezone = cleaned_data['timezone']
    profile.language = cleaned_data['language']
    profile.organizations.add(*cleaned_data['organizations'])
    user.save()
    profile.save()
    if newsletter_id is not None and cleaned_data['newsletter']:
        Subscription(user=user, newsletter_id=newsletter_id, subscribed=True).save()
    return user