summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Pinheiro Marques de Araújo <fenrrir@gmail.com>2017-12-13 04:39:27 -0300
committerTim Graham <timograham@gmail.com>2017-12-12 21:40:05 -1000
commit9f39f202abea4daf37f4ad3f9e4c272fd9e4d185 (patch)
treeddf9d063fe3548af2c9cc694cc5ae547d30e63c2
parentce26ec01631b00f1d0062a18c79abc93c489b75d (diff)
[2.0.x] Fixed #28898 -- Corrected admin check to allow a OneToOneField in ModelAdmin.autocomplete_fields.
Backport of 30a389bd7795016d7f48bcda997e5dea5116f9bb from master
-rw-r--r--AUTHORS1
-rw-r--r--django/contrib/admin/checks.py2
-rw-r--r--docs/releases/2.0.1.txt3
-rw-r--r--tests/modeladmin/test_checks.py15
4 files changed, 19 insertions, 2 deletions
diff --git a/AUTHORS b/AUTHORS
index 7554f84576..8e92aa9fd4 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -687,6 +687,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 a9398db7e7..97d1a4134a 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)