什么是" related_name"在peewee,python的ORM库中与ForeignKeyField对象一起使用的属性?

时间:2014-06-06 20:26:26

标签: python peewee

我正在尝试使用python的peewee库并创建一些外键来关联两个不同的模型。我正在阅读这里的peewee文档

http://peewee.readthedocs.org/en/latest/peewee/cookbook.html#non-integer-primary-keys-composite-keys-and-other-tricks

其中有几个点在创建ForeignKeyField时使用“related_name”属性。它似乎遵循一般模式,其中“related_name”的值是您正在创建的类的复数形式(Tweet - >“tweets”)。此值是否为您正在创建ForeignKeyField的表中的列创建名称?如何以及为什么使用这个“related_name”属性?

1 个答案:

答案 0 :(得分:2)

我实际上从未使用过peewee,但是从docs和我对Django ORM(看起来很相似)的知识来看,这就是我能说的:

创建ForeignKeyField时,您引用的模型(FK“目的地”)也将使用新属性进行扩展,以便您可以“向后”访问关系。

在您链接的示例教程中,您可以看到在FK声明之后,他们可以键入user.tweets,其中属性tweets将您传递的名称作为related_name传递给FK Field。

它通常是复数的原因是ForeignKey定义了多对一关系,因此反过来将是一对多:在该示例中,每个Tweet对用户具有FK,因此easch用户将被允许有很多推文。