7

具体的には、日付ウィジェットをフォームにレンダリングしたいのですが、それを「HTML5」にしたいと思います(そのため、javascript などを忘れて、Chrome、Opera、Safari を信頼して日付ピッカーを表示できます)。

JavaScript ソリューションはありません。既にウェブ上で見つけました。

ここに私のコードのスニペットがありますが、それでもフォーム フィールドthedateの type 属性を「テキスト」として配置します。

#models.py

class MyModel(models.Model):
    user = models.ForeignKey(User)
    thedate = models.DateField()

#forms.py

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        widgets = {
            'thedate': TextInput(attrs={'type': 'date'}),
        }

誰でも光を当てることができますか?

前もって感謝します。

4

3 に答える 3

12

django-html5 の使用

  1. django-html5をインストールします。pip install django-html5

  2. forms.py では、import html5.forms.widgets as html5_widgets

  3. 設定widgets['thedate'] = html5_widgets.DateInput

トリックを見つけたばかりなので、個人的にはテストしませんでしたが、あなたのおかげでおそらくそれを使用するつもりです:D

input_type をオーバーライドするだけ

独自のウィジェットを作成することもできます。アイデアは次のとおりです。

from django import forms

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

詳細は を参照しdjango/forms/widgets.pyてください ;)

于 2012-10-26T21:08:51.583 に答える
5

ここに簡単なものがあります:

このコードを form.py の任意の場所に配置します

forms.DateInput.input_type="date"
forms.DateTimeInput.input_type="datetime-local" 
于 2013-06-09T05:13:06.130 に答える
2

ここに、基本的に jpic のソリューションのコード スニペットと、ここでも答えを探した後に使用したものがあります -->

class EmailTextInput(django.forms.widgets.TextInput):
    """Subclass TextInput since there's no direct way to override its type attribute"""
    input_type ='email'

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        widgets = {
            'thedate': EmailTextInput()
        }
于 2013-01-03T22:37:07.650 に答える