如何在多对多关系的情况下用ponyorm记录select
How to select records in the case of a many to many relation with ponyorm
我是 ponyorm 的新手。
假设我有这两个 类 和它们之间的多对多关系:
class Student(db.Entity):
id = PrimaryKey(str)
name = Required(str)
courses = Set("Course")
class Course(db.Entity):
id = PrimaryKey(str)
name = Required(str)
semester = Required(int)
students = Set(Student)
我想 select 一些特定学生学习的课程。我做的是:
student = Student.select(lambda s: s.id == id).get()
courses = Course.select(lambda c: c.students == student).get()
我得到这个错误:
Incomparable types 'Set of Student' and 'Student' in expression: c.students == student
正确的做法是什么?
谢谢
我不知道确切的库,但我认为问题是 c.students
指定了所有学生的集合,因此像这样测试平等性没有太大意义。
您可能想将第二行更改为如下内容(不过我没有测试):
Course.select(lambda c: student in c.students).get()
这让我想知道是否真的有更好的方法来做到这一点。如果您只想检索特定学生参加的课程,为什么不从变量 student
?
中检索 courses
字段
类似
student = Student.select(lambda s: s.id == id).get()
student.courses # do something with it
我是 ponyorm 的新手。
假设我有这两个 类 和它们之间的多对多关系:
class Student(db.Entity):
id = PrimaryKey(str)
name = Required(str)
courses = Set("Course")
class Course(db.Entity):
id = PrimaryKey(str)
name = Required(str)
semester = Required(int)
students = Set(Student)
我想 select 一些特定学生学习的课程。我做的是:
student = Student.select(lambda s: s.id == id).get()
courses = Course.select(lambda c: c.students == student).get()
我得到这个错误:
Incomparable types 'Set of Student' and 'Student' in expression: c.students == student
正确的做法是什么? 谢谢
我不知道确切的库,但我认为问题是 c.students
指定了所有学生的集合,因此像这样测试平等性没有太大意义。
您可能想将第二行更改为如下内容(不过我没有测试):
Course.select(lambda c: student in c.students).get()
这让我想知道是否真的有更好的方法来做到这一点。如果您只想检索特定学生参加的课程,为什么不从变量 student
?
courses
字段
类似
student = Student.select(lambda s: s.id == id).get()
student.courses # do something with it