niceyes 发表于 2021-9-13 00:10:54

django 多级 外键 查找 疑点,请高手解!!

由于view 函数返回了 很多找出来的数据,我不知道怎么把对应的数据 一行行的返回给网页,,
view里如果是 一条 filter 语句我知道弄, 但多条而且是 一级一级的查找,完全不知道咋弄了
重要的是要怎么把 三个表的内容拼成一行,也不明白
另外,我也觉这样 几个for 循环,感觉也有点笨.有没有更好的方法

niceyes 发表于 2021-9-13 00:12:53

@csrf_exempt
@check_login
def search_result(request):
    if request.method=='GET':
      return render(request,'search_result.html')
    elif request.method=='POST':
      project_name=request.POST['project_name']      
      search_project=ProjectInfo.objects.filter(porject_name_contains=project_name).values_list('id','project_name')
      for project_name_c in search_project:
            project_id=project_name_c.id
            search_order=OrderTicket.objects.filter(id_project=project_id)
            for order_id_c in search_order:
                order_id=order_id_c.id
                search_rebar=Rebar.objects.filter(id_order=order_id) # 怎么样才能把这里的数据 和上面对应的数据拼起来返回给网页,
      return render(request,'search_result.html',locals())
                  

阿奇_o 发表于 2021-9-13 10:44:08

建好表和表关系,SQL查询,判断,搞定

niceyes 发表于 2021-9-13 14:57:13

本帖最后由 niceyes 于 2021-9-13 15:02 编辑

阿奇_o 发表于 2021-9-13 10:44
建好表和表关系,SQL查询,判断,搞定

def search_result(request):
    #定义空字典-------------------------------------------
    result_list=[]
    if request.method=='GET':
      return render(request,'search_result.html')
    elif request.method=='POST':
      project_name=request.POST['project_name']
      print(project_name)      
      search_project=ProjectInfo.objects.filter(project_name__contains=project_name)
      for project_name_c in search_project:
            project_id=project_name_c.id
         
            search_order=OrderTicket.objects.filter(id_project=project_id)
            for order_id_c in search_order:
                order_id=order_id_c.id
               
                search_rebar=Rebar.objects.filter(id_orderticket=order_id)
                for rebar_id_c in search_rebar:
                  
                  #把查询结果生成字典
                  result_dict={'sample_id':rebar_id_c.id,
                                 'order_id':order_id_c.id,
                                 'project_id':project_name_c.id,
                                 'project_name':project_name_c.project_name,
                                 'sample_name':order_id_c.sample_name,
                                 'sample_type':rebar_id_c.model_diameter,
                                 'order_date':order_id_c.order_date,
                                 'position':rebar_id_c.position,
                                 'test_date':rebar_id_c.test_end_date,                        
                                 }
                  #把字典加入列表,然后在网页模板上遍历生成表
                  result_list.append(result_dict)
                  
            print(result_list)
      return render(request,'search_result.html',locals())


我后面想了一个办法,把查询结果生成 列表, 但是还是不行, 首先,日期字段 返回一个'order_date': datetime.date(2020, 12, 30), 这个在列表中没引号,语法就不对


另外, 网页模板 遍历list表时出错

阿奇_o 发表于 2021-9-13 21:25:49

理清你的思路:
   1. 从models.py 里 能否获取到 正确的 我想要的 数据?
      我要在views.py里怎么处理这些数据,并返回给浏览器?
   2. 如果 在views.py里 调用模板(templates/../xx.html),模板语法 要注意些什么?
   3. 其他问题,问:对象是什么?返回的是什么? 是列表?是字典?字符串?   语法对吗?    官方参考在哪?


页: [1]
查看完整版本: django 多级 外键 查找 疑点,请高手解!!