我是新来的。
假设我有这两个类和它们之间的多对多关系:

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)

我想选择一些课程,然后由一个特定的学生。我做的是:
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()

这让我怀疑是否真的有更好的方法来做这件事。如果您所要做的只是检索特定学生所学的课程,为什么不从变量courses中检索student字段呢?
有点像
student = Student.select(lambda s: s.id == id).get()
student.courses # do something with it

关于python - 与ponyorm有多对多关系时如何选择记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40440473/

10-11 12:53