Improve Performance
Learn to improve the performances of our Django admin site.
We'll cover the following
Retrieving foreign key
If your model has a foreign key (like the Author
for our Question
model or Question
for our Choice
model), set list_select_related
to instruct Django to use select_related()
in retrieving the list of objects on the admin change list page. This can save you a bunch of database queries. You can do the following for your QuestionAdmin
.
list_select_related = ('refAuthor',)
And for your ChoiceAdmin
you can do something similar:
list_select_related = ('question','question__refAuthor',)
Autocomplete fields
If you have a foreign key in your model, which could have thousands of results, you can set an autocomplete_fields
whereby in the creation/edition form of your model, you will have a search box (to find authors). It is more efficient than selecting an Author
with a select-box interface (default appearance in Django admin for foreign keys). But for it to work properly, you will need to define a search_fields
in your foreign key model admin to indicate which fields you want to search.
TAKE a look at your Question
/Author
models.
In your AuthorAdmin
model, you will add a search_field
on the name
:
class AuthorAdmin(admin.ModelAdmin):
empty_value_display = 'Unknown'
fieldsets = [
("Author information", {'fields': ['name']}),
]
list_display = ('name','createdDate','updatedDate',)
search_fields = ('name',)
And then on the QuestionAdmin
, you will add an autocomplete_fields
on the refAuthor
foreign key
class QuestionAdmin(admin.ModelAdmin):
....
autocomplete_fields = ['refAuthor']
....
The interface will look like this:
Get hands-on with 1400+ tech skills courses.