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

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

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

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

Python

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

Q&A

解決済

1回答

1928閲覧

Djangoチュートリアルの投票機能に掲載期限を設けたい

sr2460

総合スコア50

Django

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

Python

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

0グッド

0クリップ

投稿2018/11/23 04:35

編集2018/11/23 04:42

Djangoチュートリアルを見ながら投票サイトを作りました。
https://docs.djangoproject.com/ja/2.1/intro/tutorial01/

html部分に若干の変更を加えGithubに掲載しました。
https://docs.djangoproject.com/ja/2.1/intro/tutorial01/

ここに変更を加え、質問を掲載した2日後に質問を締め切ってその後は投票結果だけが見られるようにするといった締め切り機能を設けたいと思っています。
おそらく管理画面に機能を追加するのでmodels.pyとadmin.pyに変更を加え、timezoneの機能などを使って作ればいいのかな?
というくらいのことはわかるのですが、コードの書き方はさっぱりわかりません。
検索もしてみましたがそのような方法は見つかりませんでした。

このサイトに載ってるよとかこの書籍に載ってるよといった情報程度でも良いので教えていただけば幸いです。

models.py

import datetime from django.db import models from django.utils import timezone class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now was_published_recently.admin_order_field = 'pub_date' was_published_recently.boolean = True was_published_recently.short_description = 'Published recently?' class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)

admin.py

from django.contrib import admin from .models import Choice, Question #modelsからインポート #管理サイトのテキストの初期選択数 class ChoiceInline(admin.TabularInline): model = Choice extra = 3 #管理サイトのサーチ機能 class QuestionAdmin(admin.ModelAdmin): list_filter = ['pub_date'] search_fields = ['question_text'] list_display = ('question_text', 'pub_date', 'was_published_recently') inlines = [ChoiceInline] admin.site.register(Question, QuestionAdmin)

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

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

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

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

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

guest

回答1

0

ベストアンサー

最初に、indexページで質問一覧で質問を一つクリックすると投票ページに移動すると思います。その時にDetailViewというクラスが呼ばれると思います。その関数内ではquestionを

Python

1question = Question.objects.get(pk=question_id)

で取得すると思います。この情報の中にはpub_dateが含まれているので、timezone.now()で現在と比較して、古ければvoteページにredirectするという感じになるかと思います。

投稿2018/11/23 10:17

Yhaya

総合スコア439

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

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

sr2460

2018/11/26 00:52

すぐにコードが思いつかないですが、一度その方向性で作ってみようと思います!!!
sr2460

2018/11/29 04:52

他の問題にかかりきりになってしまいここのコードを書くまでいかないのでいったん締め切ります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問