Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最小化Django查询集的数量以创建json.dump_Django_Json_Django Queryset - Fatal编程技术网

最小化Django查询集的数量以创建json.dump

最小化Django查询集的数量以创建json.dump,django,json,django-queryset,Django,Json,Django Queryset,首先,感谢您的时间和帮助:) 我创建了下面的模型,有一段时间我一直在愉快地使用场景1(场景也在下面)进行编码 现在我开始使用图表,需要以场景2的形式访问数据。场景2起作用——附加值是我有时间在等待结果的同时做三明治。我知道这是由于我四次访问数据库造成的,所以我可能创建了代码史上最低效的一段代码,但我没有让它在其他方面工作 我非常感谢您帮助我理解如何在不违背Django所代表的每一条原则的情况下实现预期的结果 再次感谢你 Model: class People_stats(models.

首先,感谢您的时间和帮助:)

我创建了下面的模型,有一段时间我一直在愉快地使用场景1(场景也在下面)进行编码

现在我开始使用图表,需要以场景2的形式访问数据。场景2起作用——附加值是我有时间在等待结果的同时做三明治。我知道这是由于我四次访问数据库造成的,所以我可能创建了代码史上最低效的一段代码,但我没有让它在其他方面工作

我非常感谢您帮助我理解如何在不违背Django所代表的每一条原则的情况下实现预期的结果

再次感谢你

Model:

    class People_stats(models.Model):
    people_stats = models.CharField(max_length=50, primary_key=True)        
    con_basmat = models.IntegerField(null=True, max_length=6) 
    con_cgoods = models.IntegerField(null=True, max_length=6) 
    con_cserv = models.IntegerField(null=True, max_length=6)                 


   SCENARIO 1 - when iterating in template 

     Views:

        people = ['Name', 'Benchmark1', 'Benchmark2', 'Benchmark3']
        people_names = [form.cleaned_data[p] for p in people]            

        profiles =  [People_stats.objects.filter(name__in=people_names)] 

     Template: 

        {% for p in profiles %}
          {%for d in p %}              
            <ul>
              <li>{{d.con_basmat}}</li>
              <li>{{d.con_cgoods}}</li>
              <li>{{d.con_cserv}}</li>                        
            </ul> 
          {%endfor%} 
        {% endfor %}       


    #Scenario 2 - when I need to access model fields and create a json.dump  

      Views:

        N = form.cleaned_data['Name']
        B1 = form.cleaned_data['Benchmark1']
        B2 = form.cleaned_data['Benchmark2']
        B3 = form.cleaned_data['Benchmark3']

        dir_prof1 =  People_stats.objects.filter(name__exact=N)
        dir_prof2 =  People_stats.objects.filter(name__exact=B1)
        dir_prof3 =  People_stats.objects.filter(name__exact=B2)
        dir_prof4 =  People_stats.objects.filter(name__exact=B3)

        for d in dir_prof1:               
          con_ind1 = ['Basic Materials', d.con_basmat],['Consumer Goods', d.con_cgoods],['Consumer Services',d.con_cserv]

        for d in dir_prof2:               
          con_ind2 = ['Basic Materials', d.con_basmat],['Consumer Goods', d.con_cgoods],['Consumer Services',d.con_cserv]

        for d in dir_prof3:               
          con_ind3 = ['Basic Materials', d.con_basmat],['Consumer Goods', d.con_cgoods],['Consumer Services',d.con_cserv]

        for d in dir_prof4:               
          con_ind4 = ['Basic Materials', d.con_basmat],['Consumer Goods', d.con_cgoods],['Consumer Services',d.con_cserv]

        con_ind_dmp1 = json.dumps(con_ind1, cls=DjangoJSONEncoder)

        con_ind_dmp2 = json.dumps(con_ind2, cls=DjangoJSONEncoder)

        con_ind_dmp3 = json.dumps(con_ind3, cls=DjangoJSONEncoder)

        con_ind_dmp4 = json.dumps(con_ind4, cls=DjangoJSONEncoder)

      Template: 
         I don't think we need to make it that far to realize that this is not the way to go :( 
模型:
班级人员统计(models.Model):
people\u stats=models.CharField(最大长度=50,主键=True)
con_basmat=models.IntegerField(null=True,max_length=6)
con_cgoods=models.IntegerField(null=True,max_length=6)
con_cserv=models.IntegerField(null=True,max_length=6)
场景1-在模板中迭代时
意见:
people=['Name'、'Benchmark1'、'Benchmark2'、'Benchmark3']
人员名称=[form.cleaned_data[p]表示人员中的p]
profiles=[People\u stats.objects.filter(name\u in=People\u name)]
模板:
{配置文件%中的p为%0}
{p%中d的%s}
  • {d.con_basmat}
  • {{d.con_cgoods}}
  • {{d.con_cserv}}
{%endfor%} {%endfor%} #场景2-当我需要访问模型字段并创建json.dump时 意见: N=表单.已清理的_数据['Name'] B1=表格数据['Benchmark1'] B2=表单。已清理的_数据['Benchmark2'] B3=表格.数据['Benchmark3'] dir\u prof1=People\u stats.objects.filter(name\u exact=N) dir\u prof2=People\u stats.objects.filter(name\uu exact=B1) dir\u prof3=People\u stats.objects.filter(name\uu exact=B2) dir\u prof4=People\u stats.objects.filter(name\uu exact=B3) 对于DIRU prof1中的d: con_ind1=[“基本材料”,d.con_basmat],“消费品”,d.con_cgoods],“消费服务”,d.con_cserv] 对于dir_prof2中的d: con_ind2=[“基本材料”,d.con_basmat],“消费品”,d.con_cgoods],“消费服务”,d.con_cserv] 对于DIRU prof3中的d: con_ind3=[“基本材料”,d.con_basmat],“消费品”,d.con_cgoods],“消费服务”,d.con_cserv] 对于DIRU prof4中的d: con_ind4=[“基本材料”,d.con_basmat],“消费品”,d.con_cgoods],“消费服务”,d.con_cserv] con_ind_dmp1=json.dumps(con_ind1,cls=DjangoJSONEncoder) con_ind_dmp2=json.dumps(con_ind2,cls=DjangoJSONEncoder) con_ind_dmp3=json.dumps(con_ind3,cls=DjangoJSONEncoder) con_ind_dmp4=json.dumps(con_ind4,cls=DjangoJSONEncoder) 模板: 我不认为我们需要走那么远才能意识到这不是我们要走的路:(
试试这个

对于DIRU prof1中的d:
con_ind1={‘基本材料’:d.con_basmat,‘消费品’:d.con_cgoods,‘消费服务’:d.con_cserv}

对于dir_prof2中的d:
con_ind2={'Basic Materials':d.con_basmat,'消费品':d.con_cgoods,'消费服务',d.con_cserv}

对于dir_prof3中的d:
con_ind3={‘基本材料’:d.con_basmat,‘消费品’:d.con_cgoods,‘消费服务’:d.con_cserv}

对于DIRU prof4中的d:
con_ind4={‘基本材料’:d.con_basmat,‘消费品’:d.con_cgoods,‘消费服务’:d.con_cserv}

con_ind_dmp1=json.dumps(con_ind1)

con_ind_dmp2=json.dumps(con_ind2)

con_ind_dmp3=json.dumps(con_ind3)


con_ind_dmp4=json.dumps(con_ind4)

谢谢你的回答-它的代码更干净,但是我主要担心的是,四次命中数据库会导致性能非常慢,所以我需要解决的主要问题是不必生成:dir_prof1=People\u stats.objects.filter(name\u exact=N)dir\u prof2=People\u stats.objects.filter(name\uu exact=B1)dir\u prof3=People\u stats.objects.filter(name\uu exact=B2)dir\u prof4=People\u stats.objects.filter(name\uu exact=B3)基本上是4个查询集。