diff --git a/aleksis/apps/ldap/util/ldap_sync.py b/aleksis/apps/ldap/util/ldap_sync.py
index 309a937581613777fc644b35ddf6845799e1b9c6..652e696130847a75453f7159a425f80d534f88d0 100644
--- a/aleksis/apps/ldap/util/ldap_sync.py
+++ b/aleksis/apps/ldap/util/ldap_sync.py
@@ -33,15 +33,6 @@ def setting_name_from_field(model, field):
     return f"additional_field_{part_1}_{field.name}"
 
 
-def syncable_fields(model):
-    """Collect all fields that can be synced on a model."""
-    return [
-        field
-        for field in model._meta.fields
-        if (field.editable and not field.auto_created and not field.is_relation)
-    ]
-
-
 def ldap_field_to_filename(dn, fieldname):
     """Generate a reproducible filename from a DN and a field name."""
     return f"{slugify(dn)}__{slugify(fieldname)}"
@@ -78,7 +69,7 @@ def update_dynamic_preferences():
     Person = apps.get_model("core", "Person")
     for model in (Person,):
         # Collect fields that are matchable
-        for field in syncable_fields(model):
+        for field in model.syncable_fields():
             setting_name = setting_name_from_field(model, field)
 
             @site_preferences_registry.register
@@ -216,7 +207,7 @@ def ldap_sync_from_user(user, dn, attrs):
         person.email = user.email
 
     # Synchronise additional fields if enabled
-    for field in syncable_fields(Person):
+    for field in Person.syncable_fields():
         setting_name = "ldap__" + setting_name_from_field(Person, field)
 
         # Try sync if constance setting for this field is non-empty