このところDjangoを触っていました。
ひとしきりチュートリアルやって慣れると、Generic Viewが便利なこともあっておおむねさくさく進むのですが、しょーもないところでハマって抜けなくなった。
ハマると日本語の情報がなさすぎて、非常に辛かったのでメモ。
やりたかったこと
DjangoのGeneric Viewでdjango-datetime-widgetを使いたい。それだけ。
forms.pyでwidgetを変更して、viewを頑張って書くケースは、Stack Overflowで調べててもわりと出てくる。
asaglimbeni/django-datetime-widget · GitHub
Django-Datetime-widgetを使ってみた - くろねこ日記
Generic Viewだと、forms.pyは使わなくてもいいので、いまいち要領がわからない。
でも真面目にview書くのめんどくさいから、Genericでなんとかしたい。
解決方法
forms.pyはドキュメント通りに用意、Genericのform_class変数で、作ったModelFromを指定する。
forms.pyはこんな感じ
from datetimewidget.widgets import DateWidget class SpamForm(ModelForm): class Meta: model = Spam dateOptions = { 'format': 'yyyy-MM-dd', 'autoclose': True, 'showMeridian': True, } widgets = { 'spam_date': DateWidget(options=dateOptions), }
Viewはこんな感じ。
from django.views import generic from manage_sales.forms import SpamForm class SpamCreateView(generic.CreateView): form_class = Spam model = Spam
これでGenericViewでWidgetを好き勝手いじれる。