モデル Movie のフィールド imdb_id をデータベースに保持します。
class Movie(models.Model):
imdb_id = models.IntegerField('imdb ID', blank=True, null=True, unique=True)
def _get_imdb_url(self):
return self.imdb_id and 'http://www.imdb.com/title/tt%s/' % str(self.imdb_id).zfill(7) or ''
def _set_imdb_url(self, imdb_url):
self.imdb_id = int( re.compile(r'[^\d]').sub('', imdb_url))
imdb_url = property(_get_imdb_url, _set_imdb_url)
そして、フィールド 'imdb_id' のテキスト入力の近くの管理フォームに imdb.com への外部リンクを表示するための特別なウィジェットを作成したいと考えています。特別なマスク (私の場合、このマスクは ' http://www.imdb.com/title/tt%s/ ') を使用して生成された、外部リンクを持つ任意のフォーム フィールドのグローバル ウィジェットである可能性があると思います。ウィジェットの書き方は知っていますが、ムービー モデルで定義されたマスクをこのウィジェットにプッシュする方法がわかりません。DRY 原則に違反して、このマスクを 2 つの異なる場所で定義したくありません。また、将来的には他の外部リンクと同じ目的のための優れたツールになるでしょう。
このウィジェットについてどう思いますか? それを実現することはどのように可能ですか?誰かが私より前に書いたのだろうか?
ありがとう!