1

私の「メモ」モデルには、「タグ」と呼ばれるチャーフィールドがあります。Note.tags 文字列を取り、それを . Pythonリストを提供するメソッドがあり、テンプレートでフォームメソッド「.as_ul」を使用できることを期待しています。しかし、変数をテンプレートに入れることができないようです。ここに私がしようとしているものがあります:

私のビュークラス:

import string
...

class NoteDetailView(generic.DetailView):
    model = Note
    template_name = 'note_taker/note'

    def tag_string_to_list(self):
        tag_string = Note.tags
        tag_list = string.split(tag_string)
        return render(template_name, Context({'tag_list':tag_list}, note_taker))

私のテンプレート:

<ul>
  {{ tag_list.as_ul }}
</ul>

「.as_ul」の使い方が間違っていても、{{ tag_list }} でリストをレンダリングすることさえできません

ビューメソッドがどのように機能するかを理解していないと思います。

4

2 に答える 2

0

メソッドを使用しget_context_dataます。

class NoteDetailView(generic.DetailView):

    def get_context_data(self, **kwargs):
        context = super(NoteDetailView, self).get_context_data(**kwargs)
        context['tag_list'] = Note.tags.split()
        return context

テンプレート内では を使用することはできません.as_ulが、組み込みのフィルターがあり、unordered_listおそらく必要なことを実行できます。

<ul>
    {{ tag_list|unordered_list }}
</ul>

Tagただし、スタンドアロンモデルを定義し、単なる char フィールドではなく多対多の関係を使用することを検討する必要があります。これは、多対多の関係の典型的な例の 1 つです。または、サードパーティの Django タグ付けパッケージのいずれかを使用します。

于 2013-06-27T20:59:19.020 に答える