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

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

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

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

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

865閲覧

Djangoでプルダウン選択時の日時が日本時間で表示されない

swing_swimming

swing_swimming

総合スコア54

Django

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

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/03/04 16:56

編集2020/03/04 17:27

前提・実現したいこと

研修会の申し込みフォームを作っています。
最初に主催者が研修会の題名を作成し、モデルに保存します。
その後主催者が日時を作成し、別のモデルに保存します。
研修会と日時はForeignKeyで紐づいています。

日時のモデルに保存している日時をリストとして表示し、参加申込者に選択してもらいたいと思っています。
表示される日時は研修会ごとになるようにviewsでフィルターした後、formsに渡しています。

発生している問題・エラーメッセージ

参加申込者が日時を選択する際に日時が
主催者が作成した時間とは9時間ずれて表示されてしまいます。
(日本時間ではなく協定世界時で表示されている?)
これを主催者が作成した時間で表示されるようにしたいです。
settings.pyではTIME_ZONE = 'Asia/Tokyo'、USE_TZ = Trueとしています。

該当のソースコード

Python

1# models.py 2class Training(models.Model): 3 title = models.CharField(max_length=150, verbose_name='研修名') 4 owner = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='主催者') 5 6class Training_Date(models.Model): 7 target = models.ForeignKey(Training, on_delete=models.CASCADE, verbose_name='対象研修') 8 training_date = models.DateTimeField(verbose_name='開催日時') 9 10class Apply(models.Model): 11 target = models.ForeignKey(Training, on_delete=models.CASCADE, verbose_name='対象研修') 12 apply_user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='参加者') 13 apply_date = models.ForeignKey(Training_Date, on_delete=models.CASCADE, verbose_name='参加日時')

Python

1# views.py 2class DateSelectView(CreateView): 3 model = Apply 4 form_class = ApplyForm 5 template_name = 'training/apply_form.html' 6 success_url = reverse_lazy('training:index') 7 8 def get(self, request, *args, **kwargs): 9 form_class = self.get_form_class() 10 training = Training(pk=self.kwargs['pk']) 11 training_date = Training_Date.objects.filter(target=training) 12 form = form_class(training_date=training_date) 13 params = { 14 'form': form, 15 } 16 return render(request, self.template_name, params) 17 18 def post(self, request, *args, **kwargs): 19 ...

Python

1# forms.py 2class ApplyForm(forms.ModelForm): 3 class Meta: 4 model = Apply 5 fields = ['apply_date', ] 6 7 def __init__(self, training_date, *args, **kwargs): 8 super(ApplyForm, self).__init__(*args, **kwargs) 9 self.fields['apply_date'].queryset = training_date

HTML

1<!-- apply_form.html --> 2{% extends 'base.html' %} 3{% block body %} 4<h3>研修申し込み</h3> 5<form action="" method="post"> 6 <table>{{ form.as_table }}</table> 7 {% csrf_token %} 8 <button type="submit">送信</button> 9</form> 10{% endblock %}

試したこと

DateSelectViewの段階でreplace(tzinfo=None)としましたが、変わりませんでした。
また、+ datetime.timedelta(hours=9)で9時間足しましたが、変わりませんでした。

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

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

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

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

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

llr114

2020/03/16 18:35

そもそも登録時の、DB上の時間は正しいものでしょうか? ルートディレクトリで、 python manage.py dbshell を実行して、 select * from テーブル名; を実行して、内容を確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問