采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我想问一下关于django model filter 的时候如果username = self.request.user 的时候是可以返回成功的,老师课程里面也是这样写的,但是通过type可以看到这是个类对象,当filter 的时候传入类对象为什么可以返回成功呢?还有就是每次执行都print了两次这是什么原因呢?
self.request.user 这是一个simplelazyobject对象,我们可以当做user对象对待 http://www.hongweipeng.com/index.php/archives/1787/ 你可以看看这个文章
嗯嗯,我的意思是filter的时候username=obj,这个obj应该是self.request.user.username这个字段,但是为什么传入self.request.user的时候会自动匹配到username上,这个原理是和print时调用__str__的原理一样吗?不是很清楚
是的,你的这个尝试很不错, 你可以尝试一下将__str__返回的是另一个字段看看是否还是能自己通过username去查询
看来是的,根据你的提示,我又断点了一下django源码,在django/db/models/fields/__init__.py 中发现了一个函数是处理这个操作的 def to_python(self, value): if isinstance(value, str) or value is None: return value return str(value) 这解释了为什么传入一个类可以匹配到一个字段了,传入的是类的话django会默认str()一下
登录后可查看更多问答,登录/注册
Django REST framework课程视频,RESTFul API前后端分离开发
10.4k 1
4.4k 51
1.1k 19
1.8k 19
1.4k 19
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号