formsets.py には、次のコード スニペットがあります。
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 がこのように宣言されてから、self で呼び出されるのはなぜですか? そうすることで何か得られるものはありますか? get_default_prefix
BaseInlineFormSet (forms/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('+','')
もう 1 つBaseGenericInlineFormset
は @classmethod を使用しているため、タイプミスではないようです。なぜこのようにして、自分自身で呼び出すのか理解できません。
私が見る唯一の手がかり(私には理解できません)は、管理者がそれを呼び出すように見えることですFormSet.get_default_prefix()
Pythonについて理解していないことがあるかどうか疑問に思っています。