正在回答
同学,你好。老师根据同学的问题具体作答了,也为之前的内容做了更加详细的表述,同学可直接查看下面的回答,重新理解
问题一:查出来是Blog表里id=1的对象,在B表里blog字段所在的某对象
问题二:related_name是本表外键关联的对象反向来查找本表时用到的名称,related_query_name是用本表外键关联的对象根据本表某些字段做筛选条件时要用到的名称,得到本表外键关联的对象,以下图为例:
related_name:根据Tag外键所关联的表Article表来查找的Tag模型对象
>>>a = Article.objects.get(id=1)
>>>a.tags.all() #找到的是Tag对象
>>>a.tags.filter(name="important") #找到的是Tag对象的name值等于important的对象
a.tags.filter(name="important") 和Tag.objects.filter(name="important")是一个意思,tags也就是Tag对象的反向管理器,objects是Tag对象的管理器,所以反向指从一个模型外键所关联的对象反向来找到本模型的管理器,写法为“一个模型外键所关联的对象.related_name”
related_query_name:用于本表外键关联的对象Article根据本表Tag某些字段做筛选条件时要用到的名称,得到本表外键关联的对象Article,如得到外键为Article的模型Tag对象的name值等于important的Article对象
>>>Article.objects.filter(tag__name="important")
问题三、related_query_name只有这个双下划线用法?老师所了解的是的,如果还有其他用法,同学也可使用,因为发现其他好用的功能为什么不用呢。
如果解决了你的疑惑,请采纳,祝学习愉快~
同学,你好。related_query_name是目标模型中用于反向筛选器的名称,如果不定义则默认为related_name的值,可以看如下例子:
1、related_name从相关对象返回到此对象要使用的名称,定义related_name之后,可以通过“模型.related_name的名称”访问那些关联了此模型的对象,如:
关于使用它进行反向查询可看如下例子:
blog = ForeignKey(Blog, on_delete=models.CASCADE, related_name='entries')
通过entries名称进行查询:
b = Blog.objects.get(id=1)
b.entries.all()
2、related_query_name定义后,可用定义的名称来反向筛选关联于此模型的模型:
如果解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 218 份
- 解答问题 3562 个
本阶段带你用Python开发一个网站,学习主流框架Django+Flask是Python Web开发的第一步,在基础知识上实现积分商城的项目开发,体验真实的项目开发流程,提高解决编程问题和效率的能力。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星