一、前几日内容回顾
对于Queryset内容的理解
print(models.Publish.objects.filter(name='南方出版社'))
print(type(models.Publish.objects.filter(name='南方出版社')))
publish_obj = models.Publish.objects.filter(name='南方出版社').first()
print(publish_obj)
print(type(models.Publish.objects.filter(name='南方出版社').first()))
print(publish_obj.book_set) # app01.Book.None
print(type(publish_obj.book_set))
print(publish_obj.book_set.all()) # 因为一个出版社会有多本书,所以得加all()
for i in publish_obj.book_set.all():
print(i.title)
res = models.Publish.objects.filter(name='南方出版社').values('book__title')
print(res)
for i in publish_obj.book_set.all():
print(i.title)
res = models.Book.objects.select_related('publish')
print(res, type(res))
for obj in res:
print(obj.publish.name)
<QuerySet [<Publish: 出版社对象:南方出版社>]>
<class 'django.db.models.query.QuerySet'>
出版社对象:南方出版社
<class 'app01.models.Publish'>
app01.Book.None
<class 'django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager'>
<QuerySet [<Book: 书籍对象:django从入门到入土爆款>, <Book: 书籍对象:python数据分析爆款>]>
django从入门到入土爆款
python数据分析爆款
<QuerySet [{'book__title': 'django从入门到入土爆款'}, {'book__title': 'python数据分析爆款'}]>
django从入门到入土爆款
python数据分析爆款
<QuerySet [<Book: 书籍对象:python从入门到入土爆款>, <Book: 书籍对象:lunix云计算爆款>, <Book: 书籍对象:django从入门到入土爆款>, <Book: 书籍对象:python数据分析爆款>, <Book: 书籍对象:Golang高并发爆款>]> <class 'django.db.models.query.QuerySet'>
书籍对象:python从入门到入土爆款
北方出版社
书籍对象:lunix云计算爆款
北方出版社
书籍对象:django从入门到入土爆款
南方出版社
书籍对象:python数据分析爆款
南方出版社
书籍对象:Golang高并发爆款
东方出版社
"""
1、个人的理解是通过models.Publish.objects查出来的对象不管后面是value还是all还是filter出来的都是Queryset
2、all还有filter出来的Queryset需要使用first或者for循环取出一个个的class,之后再对class使用.name的方法取到最终的值
3、value出来的Queryset里面是一个个的字典,字典也可以使用for之后再使用get方法进行取值
"""