0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DateTimeFieldの値をdatetime-localタグで表示させる

Posted at

#環境・前提

  • Django4.0.2を使ったWebアプリ作成。

#やりたいこと
モデルから取得した日付データ(DateTimeField型)を、inputタグ(type="datetime-local")のvalueにセットして表示させる。

#方法
下記のようにモデルに定義した、DateTimeField型のデータを取得し、テンプレートに配置したinputタグに表示させます。

models.py
class studyModel(models.Model):
    deadline = models.DateTimeField()

    def __str__(self):
        return self.title

テンプレートです。モデルから取得したobject.deadlineをinputタグのvalueにセットして表示させます。

template.html
<input type="datetime-local" name="deadline" value="{{ object.deadline | date:"Y-m-d\TH:i" }}" />

このように表示されます。
date.png

#注意点
モデルのDateTimeField型とinputタグ(type="datetime-local")の日付フォーマットが異なるため、valueプロパティに設定する際にそのまま「{{ object.deadline }}」としてしまうと、うまく表示されず、下のような表示になってしまう。
date2.png

inputタグのフォーマットは「yyyy-MM-ddThh:mm」なので、モデルから取得した日付データをinputのvalueに設定する場合は、この形式に合わせてやる必要がある。

inputタグ(type="datetime-local")のフォーマット
  yyyy-MM-ddThh:mm

そのため、実際にvalueに設定するのは、{{ object.deadline | date:"Y-m-d\TH:i" }}になります。
「date:"日付の形式"」でフォーマットを指定します。

フォーマット中の「Y」、「m」、「d」、「H」、「i」はそれぞれDjangoの日付フォーマット変換の書式として決まっているものです。「\T」の部分については、「\」に続く文字列は変換されずそのまま出力されます。
今回必要なフォーマットは「yyyy-MM-ddThh:mm」であり、ddとhhの間に「T」が必要なので入れています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?