Orm 理解PeeWee';s相关的_name属性

Orm 理解PeeWee';s相关的_name属性,orm,peewee,Orm,Peewee,我真的很喜欢小便器。它重量轻,易于使用,并且有很好的文档记录。有一件事我很难理解,那就是在实现外键时使用的相关\u name属性。我从不确定该属性是应该与表相关,还是与列相关。有人能给我解释一下我应该用这个名字做什么,怎么用吗?例如,Peeewee文档中的学生/课程示例 假设我有学生,课程,学生课程模型。StudentCourse列的相关名称是什么 我从不确定该属性是应该与表相关,还是与列相关。有人能给我解释一下我应该用这个名字做什么,怎么用吗 外键就像一个指针,一对一。但也有一个隐含的反向引

我真的很喜欢小便器。它重量轻,易于使用,并且有很好的文档记录。有一件事我很难理解,那就是在实现外键时使用的
相关\u name
属性。我从不确定该属性是应该与表相关,还是与列相关。有人能给我解释一下我应该用这个名字做什么,怎么用吗?例如,Peeewee文档中的学生/课程示例

假设我有学生,课程,学生课程模型。StudentCourse列的相关名称是什么

我从不确定该属性是应该与表相关,还是与列相关。有人能给我解释一下我应该用这个名字做什么,怎么用吗

外键就像一个指针,一对一。但也有一个隐含的反向引用——这是相关的名称。示例:

  • Tweet有一个外键,指向发送Tweet的用户。反向引用是用户创建的tweets,因此
    相关的\u name='tweets'
  • 类别本身有一个外键以指示父类别。反向引用是给定父对象的子类别,因此
    相关的\u name='children'
  • 代码段具有其编写语言的外键。back引用是一种语言的代码段,因此
    相关的
例如,Peeewee文档中的学生/课程示例

这是一个多对多的过程,因此back引用不是很“清晰”,因为外键存在于连接表上。您的参考框架是连接表,因此在这两种情况下,反向参考都是
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')

啊。这是有道理的。所以m2m表上的相关_名称并没有那么有用。这是我决定的,但我不确定我是否遗漏了什么。谢谢。附录:自peewee版本3.0以来,属性“related_name”已更改为“back_ref”。看见
# 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')