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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

517閲覧

djangoのviews.py とmodels.py について

maru0

総合スコア11

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/04/29 08:34

編集2019/04/29 08:36

前提・実現したいこと

前提: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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

gh640

2019/04/29 08:50 編集

model object の一覧ページで、奇数番と偶数番で異なる `class` を追加したい、ということですね。パッと見の印象では、テンプレート側でやった方がシンプル & かんたんなのかなと思うのですが、いかがでしょう。どうしても奇数番と偶数番に分けて変数に入れたいですか?
gh640

2019/04/29 08:51

もしテンプレート側でやる形でもよいと思われるのであれば、現状の該当するテンプレートのコードをご提示になると、具体的な指摘・回答がもらえやすくなると思います。
maru0

2019/04/29 09:28

ご返事いただきありがとうございます。ご指摘の通りテンプレートを変更することでシンプルに解決することが出来ました。 model objectの理解のためにも異なる変数に入れたい気持ちは少しあるので、どういった部分の知識を身に付ければ可能になるかだけ、もしよろしければ教えていただけないでしょうか?
gh640

2019/04/29 10:56

そうですか、よかったです。 > model objectの理解のためにも異なる変数に入れたい気持ちは少しあるので、どういった部分の知識を身に付ければ可能になるかだけ、もしよろしければ教えていただけないでしょうか? 「可能になる」の主語は何でしょう?「奇数番目と偶数番目の model object を異なるテンプレート変数に入れること」ですか?もしそうなら、質問文に書かれているようなやり方ですでに実現されているので、特に追加の知識は必要無いのかなと思います。
maru0

2019/04/29 13:53

「可能になる」の主語はその通りです。変数に入れることは質問文のやり方で実現しているのですね。ブラウザで表示させたときデータが表示されなかった(エラーは出ないが、テンプレートエンジンで変数を用いて書いたものが表示されない)のでスライスできていないのかと思っていました。 分かりづらい日本語や聞き方にもかかわらず答えていただき誠にありがとうございました。
guest

回答1

0

ベストアンサー

テンプレートで{% cycle 'value1' 'value2'%}を書くのが正着かと思いました。

https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#cycle


エラーになるのかそうでないのか、エラーになるならどういうエラーになるのかを書きましょう。

投稿2019/04/29 08:53

編集2019/04/29 08:54
quickquip

総合スコア11038

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

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

maru0

2019/04/29 09:22

ありがとうございます。この書き方で解決することが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問