質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3769閲覧

【django】template側でリストが表示できない

michito_m

総合スコア17

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/03/21 10:18

編集2019/03/21 10:32

Folder内にBookを保存していくアプリケーションを作っています.
そこで各Folder内に保存されたBookのタイトル一覧をテンプレート側で表示させたいのですが,
viewから返すリストがテンプレート側で表示できず困っております.
テンプレート側の記述もわからないため,ひとまず下記の通り記載しております.

コードは以下の通りです.

python

1from django.shortcuts import render, get_object_or_404 2from .models import Folder, Recommend 3 4def folder(request): 5 folder_list = Folder.objects.order_by('-id') 6 book_list =[] 7 for i in range(len(folder_list)): 8 folder = folder_list[i].title 9 book = Book.objects.order_by('-id').filter(folder=folder) 10 book_list.append([book]) 11 context = { 12 'book_list': book_list, 13 } 14 return render(request, 'book/list.html', context)

html

1{% for book in book_list %} 2{{ book.0.0.title }}<br> 3{% endfor %}

エラー文は以下の通りです.
ValueError at /book/list/
invalid literal for int() with base 10:

エラーをみるとどうも以下の一文で止まってしまっているようです.

BookはFolderに属しています.

大変お手数ですが,どなたか文法的におかしい箇所をご教示いただけないでしょうか?

book = Book.objects.order_by('-id').filter(folder=folder)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文法的におかしいところは無いと思いますが(おそらくシンタックスエラーが出ずに実行できていますよね?)、 folder に関連した Book の取得方法が間違っているのではないでしょうか。

patch

1- folder = folder_list[i].title 2+ folder = folder_list[i]

テンプレートの方も調整が必要ではないかと思いますが、まずは上 ↑ のポイントを調整した上で、 print(list(book)) 等とやって book の中身を確認してください。その上でそれにあわせてテンプレートを調整されるとよいかと思います。

余談ですが、ループは次のように書く形にしてもよいかもしれません。

python

1book_list = [] 2for folder in folder_list: 3 book = Book.objects.order_by('-id').filter(folder=folder) 4 book_list.append(book)

(これは Bookfolder フィールドが ForeignKey(Folder, ...) と定義されていると仮定しての回答です。 models の情報を載せられていないためこの仮定を措いています。この仮定が間違っていれば適宜読み替えてください。)

投稿2019/03/23 01:39

gh640

総合スコア1407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問