#32619: 'ManyToOneRel' object has no attribute 'get_limit_choices_to'
-------------------------------+--------------------------------------
     Reporter:  Seb G          |                    Owner:  nobody
         Type:  Bug            |                   Status:  new
    Component:  contrib.admin  |                  Version:  3.2
     Severity:  Normal         |               Resolution:
     Keywords:                 |             Triage Stage:  Unreviewed
    Has patch:  0              |      Needs documentation:  0
  Needs tests:  0              |  Patch needs improvement:  0
Easy pickings:  0              |                    UI/UX:  0
-------------------------------+--------------------------------------
Description changed by Seb G:

Old description:

> = Summary
>
> The newly introduced feature in Django 3.2
>
>   ModelAdmin.autocomplete_fields now respects ForeignKey.to_field and
> ForeignKey.limit_choices_to when searching a related model)
>
> Triggers a bug when used on `ManyToOneRel`:
>
> {{{
> Traceback (most recent call last):
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/core/handlers/exception.py", line 47, in inner
>     response = get_response(request)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/core/handlers/base.py", line 181, in _get_response
>     response = wrapped_callback(request, *callback_args,
> **callback_kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/contrib/admin/sites.py", line 250, in wrapper
>     return self.admin_view(view, cacheable)(*args, **kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/utils/decorators.py", line 130, in _wrapped_view
>     response = view_func(request, *args, **kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/views/decorators/cache.py", line 44, in
> _wrapped_view_func
>     response = view_func(request, *args, **kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/contrib/admin/sites.py", line 232, in inner
>     return view(request, *args, **kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/contrib/admin/sites.py", line 417, in autocomplete_view
>     return AutocompleteJsonView.as_view(admin_site=self)(request)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/views/generic/base.py", line 70, in view
>     return self.dispatch(request, *args, **kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/views/generic/base.py", line 98, in dispatch
>     return handler(request, *args, **kwargs)
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/contrib/admin/views/autocomplete.py", line 25, in get
>     self.object_list = self.get_queryset()
>   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
> packages/django/contrib/admin/views/autocomplete.py", line 42, in
> get_queryset
>     qs = qs.complex_filter(self.source_field.get_limit_choices_to())
> AttributeError: 'ManyToOneRel' object has no attribute
> 'get_limit_choices_to'
> }}}
>
> = Steps to reproduce
>
> Use the following model:
>
> {{{#!python
> class Ticket(models.Model)
>     user = models.ForeignKey("users.User, on_delete=models.PROTECT,
> verbose_name=_("user"))
> }}}
>
> And the following admin:
>
> {{{#!python
> @admin.register(Ticket)
> class TicketAdmin(admin.ModelAdmin):
>     autocomplete_fields = ("user",)
> }}}

New description:

 = Summary

 The newly introduced feature in Django 3.2

   ModelAdmin.autocomplete_fields now respects ForeignKey.to_field and
 ForeignKey.limit_choices_to when searching a related model)

 Triggers a bug when used on `ManyToOneRel`:

 {{{
 Traceback (most recent call last):
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/core/handlers/exception.py", line 47, in inner
     response = get_response(request)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/core/handlers/base.py", line 181, in _get_response
     response = wrapped_callback(request, *callback_args,
 **callback_kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/contrib/admin/sites.py", line 250, in wrapper
     return self.admin_view(view, cacheable)(*args, **kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/utils/decorators.py", line 130, in _wrapped_view
     response = view_func(request, *args, **kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
     response = view_func(request, *args, **kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/contrib/admin/sites.py", line 232, in inner
     return view(request, *args, **kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/contrib/admin/sites.py", line 417, in autocomplete_view
     return AutocompleteJsonView.as_view(admin_site=self)(request)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/views/generic/base.py", line 70, in view
     return self.dispatch(request, *args, **kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/views/generic/base.py", line 98, in dispatch
     return handler(request, *args, **kwargs)
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/contrib/admin/views/autocomplete.py", line 25, in get
     self.object_list = self.get_queryset()
   File "/home/me/.virtualenvs/myproject/lib/python3.7/site-
 packages/django/contrib/admin/views/autocomplete.py", line 42, in
 get_queryset
     qs = qs.complex_filter(self.source_field.get_limit_choices_to())
 AttributeError: 'ManyToOneRel' object has no attribute
 'get_limit_choices_to'
 }}}

 = Steps to reproduce

 Use the following model:

 {{{#!python
 class Ticket(models.Model)
     user = models.ForeignKey("users.User", on_delete=models.PROTECT,
 verbose_name=_("user"))
 }}}

 And the following admin:

 {{{#!python
 @admin.register(Ticket)
 class TicketAdmin(admin.ModelAdmin):
     autocomplete_fields = ("user",)
 }}}

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32619#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.5d9608bb6a76d260531b5641f455640e%40djangoproject.com.

Reply via email to