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

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -