現在、Django用に独自のタグ付けアプリを作成しています。
モデルは次のとおりです。
class Tag(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
tags = models.ManyToManyField(Tag)
モデルのフォームと入力Book
用のウィジェットを作成しました。Tag
class BookForm(ModelForm):
class Meta:
model = Book
fields = ('title', 'tags')
widgets = {
'tags': TagWidget
}
class TagWidget(Widget):
"""
Widget for Tag input fields.
"""
def render(self, name, value, attrs=None):
final_attrs = self.build_attrs(attrs, name=name)
final_attrs['class'] = 'tag-input'
options = []
# TODO the following tags should be assigned from the model directly
options.append('tag1');
options.append('tag2');
list_element = u'<ul%s>' % flatatt(final_attrs)
return mark_safe(list_element + '\n<li>' + (u'</li>\n<li>'.join(options)) + '</li>\n</ul>')
質問
- 現在存在するタグをオプション配列()に追加するにはどうすればよい
options.append(...)
ですか? - また、どうすればhtmlコードの作成を改善できますか(最後の行を参照
mark_safe
)?すべてのhtmlコードを別の場所(できればテンプレートフォルダー)に配置したいと思います。