diff --git a/AUTHORS b/AUTHORS
index df5bbb82ab..a46cf625cb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -689,6 +689,7 @@ answer newbie questions, and generally made Django that much better:
     Robert Wittams
     Rob Hudson <http://rob.cogit8.org/>
     Robin Munn <http://www.geekforgod.com/>
+    Rodrigo Pinheiro Marques de Araújo <fenrrir@gmail.com>
     Romain Garrigues <romain.garrigues.cs@gmail.com>
     Ronny Haryanto <http://ronny.haryan.to/>
     Ross Poulton <ross@rossp.org>
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py
index c8e05bde7c..96194f7c74 100644
--- a/django/contrib/admin/checks.py
+++ b/django/contrib/admin/checks.py
@@ -104,9 +104,9 @@ class BaseModelAdminChecks:
         except FieldDoesNotExist:
             return refer_to_missing_field(field=field_name, option=label, model=model, obj=obj, id='admin.E037')
         else:
-            if not (field.many_to_many or field.many_to_one):
+            if not (field.many_to_many or field.many_to_one or field.one_to_one):
                 return must_be(
-                    'a foreign key or a many-to-many field',
+                    'a foreign key, a one-to-one field or a many-to-many field',
                     option=label, obj=obj, id='admin.E038'
                 )
             related_admin = obj.admin_site._registry.get(field.remote_field.model)
diff --git a/tests/admin_checks/models.py b/tests/admin_checks/models.py
index 3336ce878e..e41def39e1 100644
--- a/tests/admin_checks/models.py
+++ b/tests/admin_checks/models.py
@@ -64,3 +64,12 @@ class Influence(models.Model):
     content_type = models.ForeignKey(ContentType, models.CASCADE)
     object_id = models.PositiveIntegerField()
     content_object = GenericForeignKey('content_type', 'object_id')
+
+
+class User(models.Model):
+    name = models.CharField(max_length=1024)
+
+
+class ProfileUser(models.Model):
+    user = models.OneToOneField(User, models.CASCADE)
+    birthdate = models.DateField()
diff --git a/tests/admin_checks/tests.py b/tests/admin_checks/tests.py
index f4fabef301..454e36baf7 100644
--- a/tests/admin_checks/tests.py
+++ b/tests/admin_checks/tests.py
@@ -6,7 +6,8 @@ from django.core import checks
 from django.test import SimpleTestCase, override_settings
 
 from .models import (
-    Album, Author, Book, City, Influence, Song, State, TwoAlbumFKAndAnE,
+    Album, Author, Book, City, Influence, ProfileUser, Song, State,
+    TwoAlbumFKAndAnE, User,
 )
 
 
@@ -127,6 +128,22 @@ class SystemChecksTestCase(SimpleTestCase):
             admin.site.unregister(Book)
             admin.site.unregister(Author)
 
+    def test_autocomplete_onetoone_field(self):
+
+        class UserAdmin(admin.ModelAdmin):
+            search_fields = ('name', )
+
+        class ProfileUserAdmin(admin.ModelAdmin):
+            autocomplete_fields = ('user', )
+
+        admin.site.register(User, UserAdmin)
+        admin.site.register(ProfileUser, ProfileUserAdmin)
+        try:
+            self.assertEqual(admin.site.check(None), [])
+        finally:
+            admin.site.unregister(User)
+            admin.site.unregister(ProfileUser)
+
     def test_field_name_not_in_list_display(self):
         class SongAdmin(admin.ModelAdmin):
             list_editable = ["original_release"]
