class MemberForm(ModelForm):
# These fields map to those on the Profile model
# One for brevity here, but think of many more in practice
language = forms.CharField(
max_length=3,
widget=forms.Select(choices=Profile.LANGUAGES)
)
class Meta:
model = User
fields = ['first_name', 'last_name', 'email']class MemberCreate(CreateView):
form_class = PanelMemberForm
def form_valid(self, form):
language = form.cleaned_data['language']
with transaction.atomic():
user = form.save()
Profile(user=user, language=language).save()
return HttpResponseRedirect(self.get_success_url())