简介
最近无意间翻看了之前一个Django项目的笔记,有个Django ORM多对多关联查询的点想拿出来分享一下。
声明
本人为单纯的Python编程爱好者,本次内容是对于先前一次项目笔记的一点回忆,不是最近发生的内容。仅做学习交流目的,不喜勿喷!
正文
去年在编写毕设项目时借鉴了先前一次编写的Django简单博客项目的部分内容,发现先前编写的点赞部分使用的多对多关联,在进行处理时使用了:
obj.like_records.get(user_id=user_id)
当时发现该行代码无论关系是否存在都会出错,后来发现改成:
obj.like_records.get(id=user_id)
即可正常使用,由此得出结论,Django ORM多对多关联查询时所引用到的就是其关联的ORM对象而非数据库建立的那张关系表,因此之前使用关系表中的字段"user_id"
判断关系是否存在会一直报错,改写后"id=user_id"
可以理解为他所关联的用户对象的"id=user_id"
。看来是之前博客项目编写时对Django ORM中多对多关系的查询理解存在误区。