[django]ModelFormを継承したフォームで日付をカレンダー選択する

Django
この記事は約2分で読めます。

最近はdjangoでWEBアプリを作っています。タスク管理のためのアプリケーションで、ガントチャートで登録したタスクを管理することができます。これさえあれば、腰が重いことに定評のある僕でもザクザク作業ができちゃうというすぐれものです。

その際に、タスクの開始日と終了日の入力をカレンダー選択タイプにしたので、そのやり方を書いておきます。フォームの定義を楽すると、自由度が少し減るんですよねー。

Modelformを継承したフォーム

今回は少しでも楽をするために、フォームはModelFormを継承して作ることにしました。fieldsに入力をさせたいデータの識別子をずらずらと並べるだけで作れるんで簡単ですね。

from django.forms import ModelForm
from .models import HTask

class HTaskForm(ModelForm):
    class Meta:
        model = HTask
        fields = ('task_name','start_date','end_date','priolity')

ですが、このやり方だと、日付が全て手入力になってしまうので使いにくいです。

日付をカレンダーから選択する

もう答えを書いてしまいますが、日付をカレンダーから選択するためにはウィジェットを使うのがいいです。

from django import forms
from django.forms import ModelForm
from .models import HTask

class DateInput(forms.DateInput):
    input_type = 'date'

class HTaskForm(ModelForm):
    class Meta:
        model = HTask
        fields = ('task_name','start_date','end_date','priolity')
        widgets = {
            'start_date': DateInput(),
            'end_date': DateInput(),
        }

コメント

タイトルとURLをコピーしました