Django數(shù)據(jù)結(jié)果集序列化并展示實現(xiàn)過程
示例為一對多的表關(guān)系,學生為多,老師為一,設(shè)置外鍵字段可以為空,也就是說關(guān)聯(lián)的老師被刪除該學生依然存在,只是相應(yīng)字段留空
class Teacher(models.Model):
name = models.CharField(max_length=10,verbose_name='老師名稱')
password = models.CharField(max_length=10,verbose_name='密碼')
class Meta:
verbose_name_plural = '教師表'
def __str__(self):
return self.name
class Student(models.Model):
teacher = models.ForeignKey(to=Teacher,on_delete=models.SET_NULL,null=True,verbose_name='教師')
name = models.CharField(max_length=10,verbose_name='學生名字')
age = models.IntegerField(verbose_name='年齡')
class Meta:
verbose_name_plural = '學生表'
def __str__(self):
return self.name
teacher = models.Teacher.objects.get(pk=id) # id=id的某位老師
students = teacher.student_set.all() # 以一表反向查詢多表,查詢這位老師的學生
此時,all()返回的是一個結(jié)果集。<QuerySet [<Student: 學生1>, <Student: 學生22>, <Student: 學生3>, <Student: 學生44>]>
這里要將這個結(jié)果傳給前端ajax需要先將其轉(zhuǎn)成json格式,但是這樣的一個結(jié)果集又不能使用json.dumps的。
我的方法是先給它轉(zhuǎn)成列表嵌套字典再進行序列化操作
def index(request):
if request.method == "GET":
teacher_name = request.session.get('name')
teacher = models.Teacher.objects.get(name=teacher_name)
students = teacher.student_set.all()
print(students)
list = []
for i in students:
json_dict = {}
json_dict['name'] = i.name
json_dict['age'] = i.age
list.append(json_dict)
return JsonResponse(list,safe=False) # 這里safe默認為True,只接受參數(shù)為dict字典類型,非dict類型---“報錯:In order to allow non-dict objects to be serialized set the safe parameter to False.” safe=False之后list列表, tuple元祖, set集合就都可以
前端ajax接收參數(shù),并且循環(huán)變量當前傳過去的列表
$('#submit2').click(function(){
$.ajax({
url:'/app1/index/',
type:'GET',
success:function(res){
console.log(res)
var str = ''
for(var i = 0; i < res.length; i++){ # js中的for循環(huán)
str += '<li>' + res[i]['name'] + '</li>'
}
$('#students').html(str)
}
})
})
渲染效果如下圖所示

<button id="submit2">點擊查看我的學生</button>
<p id="students"></p>
就是這個小小的按鈕,竟然在背后做了這么多事情,使得我們要的信息成功的展示在了下面的標簽里[/code]
所以任何一份職業(yè)都不容易,沒有小角色,都是大人物
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用pyinstaller實現(xiàn)學生管理系統(tǒng)流程
pyinstaller是一個非常簡單的打包python的py文件的庫,下面這篇文章主要給大家介紹了關(guān)于Python?Pyinstaller庫安裝步驟以及使用方法的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-02-02
Python使用keys() 獲取 Redis 數(shù)據(jù)庫中的所有鍵
哈希、列表、集合、排序集合、字符串、JSON 和流是 Redis 支持的眾多數(shù)據(jù)結(jié)構(gòu)之一,本文將討論獲取 Redis 數(shù)據(jù)庫中的所有鍵,感興趣的朋友跟隨小編一起看看吧2023-08-08
舉例講解Linux系統(tǒng)下Python調(diào)用系統(tǒng)Shell的方法
這篇文章主要介紹了舉例講解Linux系統(tǒng)下Python調(diào)用系統(tǒng)Shell的方法,包括用Python和shell讀取文件某一行的實例,需要的朋友可以參考下2015-11-11
Python運維自動化psutil模塊的監(jiān)控和管理深入探究
這篇文章主要為大家介紹了Python運維自動化psutil模塊的監(jiān)控和管理深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01

