python - How to optimize models.objects.all() -
views
def vms(request): user = request.user servers = list.objects.all() return render_to_response( 'vmserver/all_vms.html', { 'list': servers, 'user': user, } )
template
{% vm in list %} <tr class="odd gradex"> <td><a href="/vmserver/vms/{{ vm.id }}/$">{{ vm.list_name }}</a></td> <td>{{ vm.ip }}</td> <td>{{ vm.app_name }}</td> <td>{{ vm.cpu }}</td> <td>{{ vm.mem }}</td> <td>{{ vm.total_hard_disk }}</td> <td>{{ vm.os }}</td> <td>{{ vm.power_status }}</td>
in models.list, there has 2 thousands of objects, since it's in render layer. how speed rendering.
the template used datatables bootstrap's plugin, auto pagination, still slowly
this code of models. models.list
class list(models.model): instance_uuid = models.charfield(verbose_name='uuid', max_length=255, null=true, blank=true, unique=true) list_name = models.charfield(verbose_name='清单主机名', max_length=255, null=true, db_index=true) hostname = models.charfield(verbose_name='主机名', max_length=255, null=true) ip = models.genericipaddressfield(verbose_name='ip地址', null=true, db_index=true) template = models.charfield(verbose_name='是否模板', max_length=20, null=true, blank=true) os = models.charfield(verbose_name='操作系统', max_length=100, blank=true, null=true) os_version = models.charfield(verbose_name='操作系统版本号', max_length=100, blank=true, null=true) total_hard_disk = models.integerfield(verbose_name='总硬盘容量', blank=true, null=true, db_index=true) cpu = models.integerfield(verbose_name='cpu核心数量', blank=true, null=true, db_index=true) mem = models.integerfield(verbose_name='内存', blank=true, null=true, db_index=true) delivery_time = models.datefield(verbose_name='资源交付时间', max_length=20, blank=true, null=true) delete_time = models.datefield(verbose_name='资源删除时间', max_length=20, blank=true, null=true) tools_status = models.charfield(verbose_name='tools状态', max_length=20, blank=true, null=true) guest_status = models.charfield(verbose_name='状态', max_length=20, blank=true, null=true) power_status = models.charfield(verbose_name='电源状态', max_length=20, blank=true, null=true) esxi_host = models.genericipaddressfield(verbose_name='esxi主机ip', blank=true, null=true) vc = models.genericipaddressfield(verbose_name='vcenterip', blank=true, null=true) app_name = models.charfield(verbose_name='应用名称', max_length=100, blank=true, null=true, db_index=true) app_role = models.charfield(verbose_name='应用角色', max_length=100, blank=true, null=true) app_description = models.charfield(verbose_name='应用描述', max_length=100, blank=true, null=true) app_admin = models.foreignkey(contact, verbose_name='管理员', to_field='name', null=true, blank=true) industry_group = models.foreignkey(industrygroup, verbose_name='归属公司', to_field='name', null=true, blank=true) born_time = models.datetimefield(verbose_name='创建时间', default=datetime.datetime.now, auto_created=true) update_time = models.datetimefield(verbose_name='上次修改时间', auto_now=true, editable=true, blank=true, null=true) objects = models.manager() custom_objs = listmanager() class meta: verbose_name = 'vsphere平台虚拟机' verbose_name_plural = 'vsphere平台虚拟机' def __unicode__(self): return self.list_name
Comments
Post a Comment