contrib_to_class和contribution_to_related_class有什么区别?

时间:2015-05-13 02:51:25

标签: django

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

直到我需要动态添加ForeignKey字段的情况,我才混淆了哪两个方法使用了contribute_to_class(cls, name)contribute_to_related_class(cls, related)

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

这两种方法之间的区别是什么?contribute_to_related_class的确切语义是什么?

1 个答案:

答案 0 :(得分:3)

假设您有以下型号:

class Article(models.Model):
    user = models.MyForeignKey(User)

在这种情况下,MyForeignKey.contribute_to_class()会在Article课程中提供方法/属性,而MyForeignKey.contribute_to_related_class()会对User课程执行相同的操作。

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