Django-views及html跨表查询

当有两个表,例如一个学生表,一个班级表,是多对一的关系。

方法1:

c = models.Class.object.get(pk=1)
#查询到ID为1的班级
stus = models.Student.object.filter(cls=c)
#查询出来所有班级为c的学生
#stus是多个对象
#可以循环出结果
for stu in stus :
 print stu.id,stu.name

方法2

stus = models.Student.object.filter(cls__name='1703')
#双下划线为跨表查询,查询学生对应的所有cls为1703的学生

方法3

c=models.Class.object.get(pk=1)
#获取ID为1的班级
stus=c.Student_set.all
#获取所有该班级下的所有学生

以上为转载信息

我的设备管理系统代码

views 视图函数跨表查询

if request.method=='GET':
    deviceId = args[0]
    deviceObj=models.Devices.objects.filter(id=deviceId).first() #获取要修改的设备信息
    deviceDict=model_to_dict(deviceObj) #将设备信息转换成字典,因为下面initial的参数必须是字典类型
   devicePath = deviceObj.dev_imgs_set.values('path').first()#获取图片路径
    deviceApplyPath=deviceObj.dev_imgs_set.values('apply_path').first()#获取申请采购图片路径
    deviceform = DeviceForm(initial=deviceDict) #初始化表单,传入值
    return render(request,'modifydevice.html',{'deviceObj':deviceObj,'deviceform':deviceform,'path':devicePath['path'],'apply_path':deviceApplyPath['apply_path']})
    

这里我用了上面转载的第三肿方法

html 前端页面跨表查询

 <p><img id="previewApplyPic" style="margin-left:300px;width:250px;height: 300px" src="/media/{{ path }}"></p> 
 <!--这里的{{ path }}用的是views里传入的path --!>
<p><img id="previewApplyPic" style="margin-left:300px;width:250px;height: 300px" src="/media/{{ deviceObj.dev_imgs_set.all.0.apply_path }}"></p>
 <!--这里的{{ deviceObj.dev_imgs_set.all.0.apply_path }}是前端跨表查询 --!>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章