我一直在使用Field.contribute_to_class
方法将字段动态注册到模型中。
直到我需要动态添加ForeignKey
字段的情况,我才混淆了哪两个方法使用了contribute_to_class(cls, name)
和contribute_to_related_class(cls, related)
。
我试图找到参考资料,但即使在django official中我也看不到有关这些方法的任何文档。
这两种方法之间的区别是什么?contribute_to_related_class
的确切语义是什么?
答案 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()
属性。