38👍
I had this problem and my conclusion was to use an autocomplete field instead. It works pretty well in most cases. The only problem is when you have a lot of entries that are mostly the same. For example, in your case, if you type Robert for the name and there’s a few hundred Robert entries in the list…
UPDATE
As mentions in shuckc’s answer, Django 2.0+ admin as now autocomplete built in.
For older Django or to use outside of the admin (old answer)
There are many apps that add autocomplete to the Django admin:
- django-autocomplete-light
- django-extensions (ForeignKeyAutocompleteAdmin)
- django-autocomplete (on google code)
- django-ajax-selects
- django-admin-autocomplete
- django-autocomplete (tyrion)
My preferred one is the last one. It’s well written, it can be used with the admin and outside of the admin, it works with ManyToManyFields, ForeignKeyFields, CharFields, etc.
I did a fork of this project for my client that adds some niceties like a lookup (loupe) button like the ForeignKeyRawIdWidget
.
31👍
Django 2.0 admin has autocomplete built in, just set the autocomplete_fields
field on the ModelAdmin
class. e.g.
class QuestionAdmin(admin.ModelAdmin):
ordering = ['date_created']
search_fields = ['question_text']
class ChoiceAdmin(admin.ModelAdmin):
autocomplete_fields = ['question']
- [Django]-Django: remove a filter condition from a queryset
- [Django]-TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
- [Django]-How do I set user field in form to the currently logged in user?
7👍
The simplest out-of-the-box solution is to add the field to your ModelAdmin
‘s raw_id_fields
— then you’ll get a pop-up window in which you can use the built-in searching/filtering and pagination control’s to find and select the object you’re after.
If you really want autocomplete, the other answers give a you reasonable starting point.
- [Django]-Can to_representation() in Django Rest Framework access the normal fields
- [Django]-Django middleware difference between process_request and process_view
- [Django]-Loop backwards using django template
4👍
You can use the ForeignKeyRawIdWidget
from django.contrib.admin.widgets
. It renders FK relations as an input with a small button along-side which presents a searchable pop up.
- [Django]-Readonly models in Django admin interface?
- [Django]-Remove default apps from Django-admin
- [Django]-413 Request Entity Too Large nginx django
- [Django]-Django ModelChoiceField: filtering query set and setting default value as an object
- [Django]-How to exclude two conditions in query via Django ORM?
- [Django]-Macros in django templates