diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py
index 05ebef2f4f3dd17124a4449ebe06b6622c1ad1be..136c6d38f1bf7b143ecf631077f48b75c2149957 100644
--- a/aleksis/core/forms.py
+++ b/aleksis/core/forms.py
@@ -639,8 +639,12 @@ class AccountRegisterForm(SignupForm, ExtensibleForm):
         for field in Person._meta.get_fields():
             if field.name in self.cleaned_data:
                 data[field.name] = self.cleaned_data[field.name]
-        if not Person.objects.filter(email=data["email"]):
-            _person, created = Person.objects.update_or_create(user=user, **data)
+        person_qs = Person.objects.filter(email=data["email"])
+        if not person_qs.exists():
+            if get_site_preferences()["account__auto_create_person"]:
+                Person.objects.create(user=user, **data)
+        else:
+            person_qs.update(user=user, **data)
         self.custom_signup(request, user)
         setup_user_email(request, user, [])
         return user