以前、同内容を質問させていただいたのですが、少しでもわかりやすいように、改めて書き直して質問させていただきます。
###前提・実現したいこと
Google App Engine(Python)で、質問投稿サイトを作成しています。
ユーザーには、質問投稿時にフォーム上のcheckboxで複数のタグを選んでもらいます。選んでもらったタグをデータベースに登録したいです。 (teratailのタグのようなものです。)
###発生している問題・エラーメッセージ
タグを扱うTagsモデルは、下記のように、idとタグ名から成っています。
python
1class Tags(ndb.Model): 2 id = ndb.IntegerProperty(indexed=True) 3 name = ndb.StringProperty(indexed=False)
質問自体を扱うQuestionsモデルは、下記のように、タイトル、質問内容、タグ「id」から成っています。タグ「id」は、複数選択できるようになっています。
python
1class Questions(ndb.Model): 2 title = ndb.StringProperty(indexed = False) 3 content = ndb.TextProperty(indexed = False) 4 tag = ndb.StringProperty(repeated=True)
質問一覧を表示するページに、タイトル、質問内容、タグ「名」を表示したいです。
現状では、タグの「id」が表示されているのですが、TagsモデルとQuestionsモデルを紐付ける方法が分かりません。
###ソースコード
python
1class Tags(ndb.Model): 2 id = ndb.IntegerProperty(indexed=True) 3 name = ndb.StringProperty(indexed=False) 4 5class Questions(ndb.Model): 6 title = ndb.StringProperty(indexed = False) 7 content = ndb.TextProperty(indexed = False) 8 tag = ndb.StringProperty(repeated=True) 9 10class MainPage(webapp2.RequestHandler): 11 def get(self): 12 question_query = Questions.query().order(-Questions.date) 13 template_values = { 14 'questions': questions, 15 } 16 template = JINJA_ENVIRONMENT.get_template('index.html') 17 self.response.write(template.render(template_values))
html
1<!--index.html--> 2{% for question in questions %} 3{{question.title}}<br> 4{{question.content}}<br> 5{% for tag in question.tag %} 6 {{tag}}/ 7{% endfor %} 8{% endfor %}
上記により、現状、
タイトル
質問内容
1/2/
という形で表示されるようになっています。
この1や2という形でタグのidが表示されているのを、タグの名前にしたいというのが希望です。
###補足情報(言語/FW/ツール等のバージョンなど)
Webフレームワーク:webapp2
テンプレートエンジン:Jinja2
言語:Python
Google App Engine利用
おそらく、私の基本的な部分の理解が不足しているのだと思いますが、お分かりの方みえましたら、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/08 02:31