前提・実現したいこと
前提:djangoでadmin ページから投稿を追加できるブログを作っています。
実現したいこと:表示するとき奇数番と偶数番で異なるCSSをかけたい
困っていること:実現したいことのために、モデルクラスのオブジェクトを奇数番と偶数番に分けて変数に格納しようとしているができない。
知りたいこと:下記のviews.py のコードのようなイメージでオブジェクトを分けて、異なる変数に入れる方法を教えていただきたいです。
発生している問題・エラーメッセージ
オブジェクトを分ける方法を知りたい。このオブジェクトのデータの構造を知りたい
該当のソースコード
python
1 2#views.py(こういったイメージでやりたいが動かない) 3 4from .models import Post 5def index(request): 6 posts=Post.objects.order_by('published') 7 posts_odd=posts[0::2] 8 posts_even=posts[1::2] 9 return render(request, 'posts/index.html',{'odd':posts_odd,'even':posts_even}) 10 11 12#models.py 13from django.db import models 14class Post(models.Model): 15 title = models.CharField(max_length=100) 16 published = models.DateTimeField() 17 image = models.ImageField(upload_to='media/') 18 body = models.TextField()
試したこと
for文で分けてみようともしましたが + が使えなかったのでエラーが出ました。上のviews.py のコードではスライスでやろうとしましたが動きませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
model object の一覧ページで、奇数番と偶数番で異なる `class` を追加したい、ということですね。パッと見の印象では、テンプレート側でやった方がシンプル & かんたんなのかなと思うのですが、いかがでしょう。どうしても奇数番と偶数番に分けて変数に入れたいですか?
もしテンプレート側でやる形でもよいと思われるのであれば、現状の該当するテンプレートのコードをご提示になると、具体的な指摘・回答がもらえやすくなると思います。
ご返事いただきありがとうございます。ご指摘の通りテンプレートを変更することでシンプルに解決することが出来ました。
model objectの理解のためにも異なる変数に入れたい気持ちは少しあるので、どういった部分の知識を身に付ければ可能になるかだけ、もしよろしければ教えていただけないでしょうか?
そうですか、よかったです。
> model objectの理解のためにも異なる変数に入れたい気持ちは少しあるので、どういった部分の知識を身に付ければ可能になるかだけ、もしよろしければ教えていただけないでしょうか?
「可能になる」の主語は何でしょう?「奇数番目と偶数番目の model object を異なるテンプレート変数に入れること」ですか?もしそうなら、質問文に書かれているようなやり方ですでに実現されているので、特に追加の知識は必要無いのかなと思います。
「可能になる」の主語はその通りです。変数に入れることは質問文のやり方で実現しているのですね。ブラウザで表示させたときデータが表示されなかった(エラーは出ないが、テンプレートエンジンで変数を用いて書いたものが表示されない)のでスライスできていないのかと思っていました。
分かりづらい日本語や聞き方にもかかわらず答えていただき誠にありがとうございました。
回答1件
あなたの回答
tips
プレビュー