diff options
| author | Rodrigo Pinheiro Marques de Araújo <fenrrir@gmail.com> | 2017-12-13 04:39:27 -0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2017-12-13 02:39:27 -0500 |
| commit | 30a389bd7795016d7f48bcda997e5dea5116f9bb (patch) | |
| tree | d1ad203204d1d43f891aa37a18fb9737ef06ee1e | |
| parent | f9a0766f1c451a98a59adaf9fa8e43a3693f79db (diff) | |
Fixed #28898 -- Corrected admin check to allow a OneToOneField in ModelAdmin.autocomplete_fields.
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rw-r--r-- | django/contrib/admin/checks.py | 2 | ||||
| -rw-r--r-- | docs/releases/2.0.1.txt | 3 | ||||
| -rw-r--r-- | tests/modeladmin/test_checks.py | 15 |
4 files changed, 19 insertions, 2 deletions
@@ -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 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) |
