#環境・前提
- Django4.0.2を使ったWebアプリ作成。
#やりたいこと
モデルから取得した日付データ(DateTimeField型)を、inputタグ(type="datetime-local")のvalueにセットして表示させる。
#方法
下記のようにモデルに定義した、DateTimeField型のデータを取得し、テンプレートに配置したinputタグに表示させます。
class studyModel(models.Model):
deadline = models.DateTimeField()
def __str__(self):
return self.title
テンプレートです。モデルから取得したobject.deadlineをinputタグのvalueにセットして表示させます。
<input type="datetime-local" name="deadline" value="{{ object.deadline | date:"Y-m-d\TH:i" }}" />
#注意点
モデルのDateTimeField型とinputタグ(type="datetime-local")の日付フォーマットが異なるため、valueプロパティに設定する際にそのまま「{{ object.deadline }}」としてしまうと、うまく表示されず、下のような表示になってしまう。
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」が必要なので入れています。