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
Robin Munn
+ Rodrigo Pinheiro Marques de Araújo
Romain Garrigues
Ronny Haryanto
Ross Poulton
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py
index c53224499a..26c5c3eef6 100644
--- a/django/contrib/admin/checks.py
+++ b/django/contrib/admin/checks.py
@@ -104,7 +104,7 @@ 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 and not isinstance(field, models.ForeignKey):
return must_be(
'a foreign key or a many-to-many field',
option=label, obj=obj, id='admin.E038'
diff --git a/docs/releases/2.0.1.txt b/docs/releases/2.0.1.txt
index 25ba39cffe..c956d7ce6b 100644
--- a/docs/releases/2.0.1.txt
+++ b/docs/releases/2.0.1.txt
@@ -23,3 +23,6 @@ Bugfixes
(:ticket:`28856`).
* Reallowed filtering a queryset with ``GeometryField=None`` (:ticket:`28896`).
+
+* Corrected admin check to allow a ``OneToOneField`` in
+ ``ModelAdmin.autocomplete_fields`` (:ticket:`28898`).
diff --git a/tests/modeladmin/test_checks.py b/tests/modeladmin/test_checks.py
index eaca153bd8..5559a8fe3c 100644
--- a/tests/modeladmin/test_checks.py
+++ b/tests/modeladmin/test_checks.py
@@ -6,7 +6,9 @@ from django.core.checks import Error
from django.forms.models import BaseModelFormSet
from django.test import SimpleTestCase
-from .models import Band, Song, ValidationTestInlineModel, ValidationTestModel
+from .models import (
+ Band, Song, User, ValidationTestInlineModel, ValidationTestModel,
+)
class CheckTestCase(SimpleTestCase):
@@ -1243,3 +1245,14 @@ class AutocompleteFieldsTests(CheckTestCase):
site = AdminSite()
site.register(Band, SearchFieldsAdmin)
self.assertIsValid(AutocompleteAdmin, Song, admin_site=site)
+
+ def test_autocomplete_is_onetoone(self):
+ class UserAdmin(ModelAdmin):
+ search_fields = ('name', )
+
+ class Admin(ModelAdmin):
+ autocomplete_fields = ('best_friend', )
+
+ site = AdminSite()
+ site.register(User, UserAdmin)
+ self.assertIsValid(Admin, ValidationTestModel, admin_site=site)