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

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

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

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

Python

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

Q&A

解決済

1回答

1073閲覧

時間制限ボタンの作成をdjangoで作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Django

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

Python

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

0グッド

0クリップ

投稿2020/05/05 03:51

編集2020/05/05 08:45

1週間前の記事の入力ボタンを締め切りとして表示制限をしたいと考え
モデルでcreate_atというdateフィールドを指定して、作成日時と現在から1週間前の日時を比較して作成日時を過ぎていればfalseになり表示がされないようなif文を作成しようと試みましたが数字や変数の比較と違い上手くいきません。

書き方や実装不可能など回答をいただければ幸いです

python

1 -----models.py---- 2 3class Toukou(models.Model): 4 content = models.TextField(verbose_name='本文', blank=True, null=True) 5 6 created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True,null=True)

    ----views.py----

python

1def form_valid(self, form): 2 now = timezone.now() 3 4 if now - datetime.timedelta(days=7) <= self.pub_date : 5     messages.success(self.request, 'カウントしました。') 6   return super().form_valid(form) 7 else: 8      return redirect('list') 9def form_invalid(self, form): 10 messages.error(self.request, "カウントができませんでした") 11 return super().form_invalid(form) 12 13

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

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

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

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

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

Yasumichi

2020/05/05 03:59

View 側でどのようにしようとしたか、追記できますか?
退会済みユーザー

退会済みユーザー

2020/05/05 08:49

できればviewsでの条件分岐ではなくhtml側で{{datetime.timedelta(days=7) <= objects.*** }}のようにできたらいいのですが...... viewsもうまくいってないのでなんとも....
guest

回答1

0

ベストアンサー

ちょっとviews.pyとかurls.pyとか分からないけど
例えばurlsでidを受けていた時

Python

1# views.py 2from .models import * 3from django.utils import timezone 4import datetime 5 6def toukou(request, id): 7 obj = Toukou.objects.get(id=id) 8 check = timezone.now() + datetime.timedelta(weeks=1) < obj.created_at 9 params = { 10 "check":check, 11 } 12 return render(request, "あなたのhtml", params

html

1{% if check %} 2<!-- 表示しない --> 3{% else %} 4<!-- 表示 --> 5{% endif %}

投稿2020/05/05 04:31

ForestSeo

総合スコア2720

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

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

退会済みユーザー

退会済みユーザー

2020/05/05 12:28

記載に沿ってコードを書き込んで上手くいきました。前回の質問でもご回答していだいてありがとうございます!
ForestSeo

2020/05/05 20:38

そうですか良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問