How to optimize django Admin using queryset cache -
im trying optimize dbase queries admin, caching results , using in coming queries. - still see dbase request each entry.
i have model this:
class actions(models.model): user = models.foreignkey(myuser) action = ... class myuser(models.model): name = models.charfield() company = models.foreignkey(companies) in admin change_list, i'd see table with:
user action company_name so defined admin follows:
class actionsadmin(admin.modeladmin): list_display = ('user','action','company_name') ... def company_name(self,instance): return instance.user.company when run this, see each user, there query company model extract company's name. however, since there not many companies , in many cases, users perform many actions once after other, want query companies once , use cached result instead of accessing dbase each entry.
how can that?
use list_select_related specify relation select query, in case:
class actionsadmin(admin.modeladmin): list_display = ('user','action','company_name') list_select_related = ('user__company', ) ... def company_name(self,instance): return instance.user.company edit:
you can specify field directly on list_display, without need custom method.
it should handle list_select_related (at least according docs linked above). if assuming companies model has name field:
class actionsadmin(admin.modeladmin): list_display = ('user','action','user__company__name')
Comments
Post a Comment