できるだけ簡潔にします。Djangoのカスタムフィールドに属性を追加します
私は次のカスタムフィールドのようなものを実装することにより、この
{{ video.youtube_url.video_id }}
を行うことがしたい:
class YouTubeURLField(URLField):
description = _("YouTubeURL")
def _video_id(self):
return re.search('(?<=\?v\=)[\w-]+', self.value)
video_id = property(_video_id)
def __init__(self, verbose_name=None, name=None, verify_exists=True, **kwargs):
super(YouTubeURLField, self).__init__(**kwargs)
kwargs['max_length'] = kwargs.get('max_length', 200)
CharField.__init__(self, verbose_name, name, **kwargs)
self.validators.append(YouTubeURLValidator(verify_exists=verify_exists))
この:
def _video_id(self):
return re.search('(?<=\?v\=)[\w-]+', self.value)
video_id = property(_video_id)
がsucessfully「VIDEO_IDを追加しません"私のカスタムYouTubeURLFieldの属性。
他のすべては完璧に動作します。
私はYouTubeのカスタムフィールドの面でデザインの面ではおそらくより良い点があると理解していますが、まずこれがなぜ機能しないのかを理解したいと思います。