Under Django 1.9.5 and admin I'm developping an application "myapp" of which below you can see a simplified complete version. Focusing on the OrderOption ModelAdmin its inline OrderDetailinline has a raw_id_field related to the model Item. Now, when I click on the magnifying lens close to the raw_id_field a popup window - as expected- is fired which allows the user to choose an item from the Item model list.
Now, in the real application the popup window is somewhat of a bottleneck because it requires about 4-6 sec. to be loaded owing to the fact that there are many records in the Item model. Luckily the Item model records change very slowly over time. In a week, say, no more than five items are either added or modified or seldom deleted. What I'd like to do is using the memcache backend to save the queryset of the Item model - which will appear in the popup window - on my memcached server and recall this same queryset each time the popup window of the raw_id_field is fired avoiding the execution of the query. My problem is that I don't know how to do it. Please help! By the way, using the debug_toolbar I see that the popup window uses the view function django.contrib.admin.options.changelist_view, no arguments, and the corresponding url name is myapp_item_changelist. The sql query is obviously SELECT "Items"."code", "Items"."Description", "Items"."Category" FROM "Items" ORDER BY"Items"."code" DESC Thanks Vittorio ============================== models.py from django.db import models # Create your models here. class Item(models.Model): code = models.CharField(primary_key=True,max_length=15,db_column='code') description = models.CharField(max_length=255, db_column='Description', db_index=True) category = models.IntegerField(choices=[(1,"Cat_1"),(2,"Cat_2")], db_column='Category',default=1) def __unicode__(self): return self.description class Meta: db_table = u'Items' class Patient(models.Model): name = models.CharField(max_length=255, db_column='Description', db_index=True) def __unicode__(self): return self.name class Meta: db_table = u'Patients' class Order(models.Model): patient = models.ForeignKey(Patient, db_column='patient') def __unicode__(self): return u"Ord.%s per %s" % (self.id_order, self.patient) class Meta: db_table = u'Order' class OrderDetail(models.Model): id_order = models.ForeignKey(Order,db_column='id_order') item_code = models.ForeignKey(Item,verbose_name='Items') quantity = models.IntegerField(db_column='quantity',blank=True,default=0) class Meta: db_table = u'OrderDetail' ============================== My admin.py from django.contrib import admin from myapp.models import * # Register your models here. class PatientOption(admin.ModelAdmin): list_display = ( 'name',) fields=( 'name',) class ItemOption(admin.ModelAdmin): list_display = ( 'code','description') fields=('code','description') class OrderDetailInline(admin.TabularInline): model=OrderDetail raw_id_fields = ['item_code',] fields=('item_code', 'quantity',) class OrderOption(admin.ModelAdmin): readonly_fields = ['patient'] list_display = ( 'patient',) fields=( 'patient',) inlines=[OrderDetailInline,] admin.site.register(Patient,PatientOption) admin.site.register(Item,ItemOption) admin.site.register(Order,OrderOption) -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/270EE134-AFDA-4E43-B59F-8CE8341EF323%40gmail.com. For more options, visit https://groups.google.com/d/optout.