鱼C论坛

 找回密码
 立即注册
查看: 1242|回复: 4

[已解决]django 多级 外键 查找 疑点,请高手解!!

[复制链接]
发表于 2021-9-13 00:10:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
由于view 函数返回了 很多找出来的数据,我不知道怎么把对应的数据 一行行的返回给网页,,  
view里如果是 一条 filter 语句我知道弄, 但多条而且是 一级一级的查找,完全不知道咋弄了
重要的是  要怎么把 三个表的内容拼成一行,也不明白
另外,我也觉这样 几个for 循环,感觉也有点笨.有没有更好的方法
最佳答案
2021-9-13 21:25:49
理清你的思路:
   1. 从models.py 里 能否获取到 正确的 我想要的 数据?  
      我要在views.py里怎么处理这些数据,并返回给浏览器?
   2. 如果 在views.py里 调用模板(templates/../xx.html),模板语法 要注意些什么?
   3. 其他问题,问:对象是什么?返回的是什么? 是列表?是字典?字符串?   语法对吗?    官方参考在哪?


impicture-ID.jpg
阿里旺旺图片20210913000733.jpg
阿里旺旺图片20210913000742.jpg

本帖被以下淘专辑推荐:

  • · django|主题: 61, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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())
                  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 10:44:08 | 显示全部楼层
建好表和表关系,SQL查询,判断,搞定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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表时出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 21:25:49 | 显示全部楼层    本楼为最佳答案   
理清你的思路:
   1. 从models.py 里 能否获取到 正确的 我想要的 数据?  
      我要在views.py里怎么处理这些数据,并返回给浏览器?
   2. 如果 在views.py里 调用模板(templates/../xx.html),模板语法 要注意些什么?
   3. 其他问题,问:对象是什么?返回的是什么? 是列表?是字典?字符串?   语法对吗?    官方参考在哪?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 14:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表