django tmeplate 视图加载缓慢

时间:2021-07-02 17:01:04

标签: python django django-views django-forms django-templates

我有一个模板视图 temrinal management,它有 2 个表单和 2 个查询集,我没有做任何排序,只是一种过滤方法。我不知道为什么页面变慢了,这可能是因为互联网连接吗?我正在使用位于单独服务器上的 mysql 数据库。

class TerminalManagementView(LoginRequiredMixin, TemplateView):
    template_name = "app/terminal_management.html"

    def post(request):
        pass

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['tb_terminal_categories'] = TbTerminalCategory.objects.all()
        context['tb_terminal_caregory_form'] = TbTerminalCategoryForm()
        context['tb_terminal_register_form'] = TbTerminalRegisterForm()
        filter = self.request.GET.get('category')
        if filter:
            terminals = TbTerminal.objects.all().filter(category__category_name=filter)
        else:
            terminals = TbTerminal.objects.all()

        page = self.request.GET.get('page', 1)
        paginator = Paginator(terminals, 9)

        try:
            data = paginator.page(page)
        except PageNotAnInteger:
            data = paginator.page(1)
        except EmptyPage:
            data = paginator.page(paginator.num_pages)

        context['terminals'] = data

        return context
class TbTerminal(models.Model):
    id = models.CharField(primary_key=True, max_length=32,
                          default=generate_uuid)
    customer = models.ForeignKey(
        TbCustomer, on_delete=models.CASCADE, db_column='cstm_id')
    terminal_id = models.CharField(max_length=64, blank=True, null=True)
    area = models.ForeignKey(
        TbArea, on_delete=models.CASCADE, db_column='extra_id1')
    room = models.ForeignKey(
        TbRoom, on_delete=models.CASCADE, db_column='extra_id2')
    category = models.ForeignKey(
        TbTerminalCategory, on_delete=models.CASCADE, db_column='cat_id')
    firmware_version = models.CharField(max_length=255, blank=True, null=True)
    total_space = models.BigIntegerField(blank=True, null=True)
    free_space = models.BigIntegerField(blank=True, null=True)
    program_version = models.CharField(max_length=255, blank=True, null=True)
    device_model = models.ForeignKey(
        TbDeviceModel, on_delete=models.CASCADE, db_column='device_model_id')

https://file.io/sJcQGq8ToX94

1 个答案:

答案 0 :(得分:1)

根据您从模板访问的字段,您可能会受益于对 ForeignKey 字段使用 select_related

https://docs.djangoproject.com/en/3.2/ref/models/querysets/#select-related

相关问题