在formsets.py,你会发现这个代码片断为什么get_default_prefix @classmethod,而不是只是一个普通的方法
class BaseFormSet(StrAndUnicode):
"""
A collection of instances of the same Form class.
"""
def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
initial=None, error_class=ErrorList):
...
self.prefix = prefix or self.get_default_prefix() # Note the self.get_default_prefix
...
...
@classmethod # Note the @classmethod
def get_default_prefix(cls):
return 'form'
为什么get_default_prefix这样声明,然后用自己叫?这样做有什么收获吗? get_default_prefix
具有再次使用@classmethod在BaseInlineFormSet另一个定义(形式/ models.py)
class BaseInlineFormSet(BaseModelFormSet):
...
@classmethod
def get_default_prefix(cls):
from django.db.models.fields.related import RelatedObject
return RelatedObject(cls.fk.rel.to, cls.model, cls.fk).get_accessor_name().replace('+','')
,另一个在BaseGenericInlineFormset
,所以它不会出现是一个错字。我只是不明白为什么会这样做,然后自我调用。
我看到(我不知道),唯一的线索是,管理员似乎与FormSet.get_default_prefix()
调用它,我想知道,如果有什么我只是不理解有关Python。
是的,我读了几个看起来合法的地方(虽然没有找到一个关于没有好处的地方)。 – boatcoder 2013-03-13 18:57:36