contrib_to_class的说明

时间:2010-03-01 17:02:49

标签: django django-models

我试图扩展代码,遇到了一个问题,我不明白一行代码。我知道它的结果 - 但我不明白它是如何发生的,我很自然地害怕改变它。

我遇到的代码是:

MyGenericRelation().contribute_to_class(model, 'field_name')

此代码的结果是一个字段,'field_name'被添加到'model'中,而我收集的字段中的对象是X类型的列表(MyGenericRelation的一部分)。

我想知道是否有人可以解释这是如何运作的。

因为,为什么我得到一个附加到'field_name'的X对象列表,如果它必须是在contrib_to_class之前的泛型关系或者使用实际的模型类型,说'Y'只给我一个列表个Y

说实话,我对contrib_to_class方法的影响和功能更感兴趣。

1 个答案:

答案 0 :(得分:42)

基本上,对于具有contribute_to_class方法的对象,在将它们添加到Model类时,我们调用contribute_to_class而不是setattr:这允许对象执行额外的簿记和/或在添加类时修改类。 Alex Gaynor在这里有一个很好的解释:http://lazypython.blogspot.com/2008/11/django-models-digging-little-deeper.html