我真的很享受Peewee ORM。它重量轻,易于使用,并且记录良好。我抓到的一件事是实现外键时使用的related_name
属性。我永远不确定该属性是否应与表格或列相关。有人可以向我解释我应该使用的名称,以及如何使用?例如,使用Peeewee文档中的学生/课程示例。
https://peewee.readthedocs.org/en/2.0.2/peewee/fields.html#implementing-many-to-many
class Student(Model):
name = CharField()
class Course(Model):
name = CharField()
class StudentCourse(Model):
student = ForeignKeyField(Student)
course = ForeignKeyField(Course)
假设我有学生,课程,学生课程模型。 StudentCourse专栏的相关名称是什么?
答案 0 :(得分:7)
我永远不确定该属性是否应该与表或列相关。有人可以向我解释我应该使用的名称,以及如何使用?
外键就像一个指针,一对一。但也有隐含的反向引用 - 这是相关的名称。例子:
related_name='tweets'
。related_name='children'
。related_name='snippets'
。例如,使用Peeewee文档中的学生/课程示例。
这是多对多的,因此后引用不是那么“清晰”,因为外键存在于联结表上。您的引用框架是联结表,因此在两种情况下反向引用都是studentcourses
,尽管这没有用,因为反向引用只会将您带到联结表。因此,对于多对多,通常可以将反向引用保留为默认值,因为您的查询通常如下所示:
# get students in english 101
Student.select().join(StudentCourse).join(Course).where(Course.name == 'ENGL 101')
# get huey's courses
Course.select().join(StudentCourse).join(Student).where(Student.name == 'Baby Huey')