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 }}是前端跨表查詢 --!>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章