Я буду максимально кратким.
Я хочу это сделать
{{ 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)
Не удалось добавить атрибут "video_id" в мой пользовательский YouTubeURLField.
Все остальное работает без нареканий.
Я понимаю, что, возможно, есть лучшие соображения по дизайну с точки зрения настраиваемого поля YouTube, но я бы лучше сначала понял, почему это не работает.