Django_Filters:第一次加载时无需使用object.all显示所有项目

问题描述

我是Django_Filter的新手

我注意到,django_filter总是在首次加载时加载所有对象,尽管尚未过滤。由于数据库中的表中有大量数据。因此,不必要地加载所有对象会导致性能下降。

在我看来这是不合理的。因此,更好的方法是,只要单击按钮,它就应该过滤结果。

如何设置Django_Filter以便仅在单击搜索按钮时显示结果(我不想使用objects.all()列出所有项目。)

这些是我与此问题相关的代码

model.py

Lettuce

filter.py

from django.db import models
class Product_Type(models.Model):
    productype_name=models.CharField(max_length=100)
class Inventory(models.Model):
   serial_number=models.CharField('Serial Number',max_length=50)
   product_type=models.ForeignKey( Product_Type,on_delete=models.CASCADE,verbose_name='Product Type')

views.py

import django_filters
from django_filters import *
from app.models import *

class  InventoriesForcopy_Filter(django_filters.FilterSet):

  class Meta:
       model=Inventory
       fields=['product_type','serial_number']

inventory_add_copy.html

def list_inventory_for_copy(request,proj_id):

   inventories_all = Inventory.objects.all()
   xfilter = InventoriesForcopy_Filter(request.GET,queryset=inventories_all)
   inventories = xfilter.qs
   context = {'project_id': proj_id,'xfilter': xfilter,'inventories': inventories}

   return render(request,'app/inventory_add_copy.html',context)

下图描述了自己:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)