tribute_to_class 和contribute_to_related_class 之间有什么区别?

Jun*_*une 1 django

我一直在使用Field.contribute_to_class将字段动态注册到模型的方法。

直到我需要动态添加ForeignKey字段的情况时,我才困惑于两种方法中使用哪一种,contribute_to_class(cls, name)以及contribute_to_related_class(cls, related)

我试图找到参考,但即使在django 官方中也看不到有关这些方法的任何文档。

这两种方法有什么区别,确切的语义是什么contribute_to_related_class

cat*_*ran 5

假设您有以下模型:

class Article(models.Model):
    user = models.MyForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,MyForeignKey.contribute_to_class()将向Article类贡献方法/属性,同时MyForeignKey.contribute_to_related_class()将对类执行相同的操作User

例如,该User.article_set属性是由ForeignKey 的contribute_to_related_class()方法引入的。