6

新しいフォームを含む Django から最新の SVN ブランチをインストールしました。django.forms.extras.widgets の SelectDateWidget を使用しようとしていますが、フィールドは通常の DateInput ウィジェットとして表示されます。

これが私のアプリケーションの forms.py です:

from django import forms
from jacob_forms.models import Client

class ClientForm(forms.ModelForm):
    DOB = forms.DateField(widget=forms.extras.widgets.SelectDateWidget)

    class Meta:
            model = Client

私は何を間違っていますか?forms/extras/widgets.py を確認すると、SelectDateWidget クラスが存在することがわかります。

4

5 に答える 5

10

本当の問題は、SelectDateWidget をこの方法で参照できないことです。別の方法で参照するようにコードを変更すると、問題が解決しました。

from django.forms import extras
...
    DOB = forms.DateField(widget=extras.SelectDateWidget)

これは、インポートされたパッケージから package.package.Class を参照できないという制限のようです。このソリューションはエクストラをインポートするため、参照はただの package.Class です。

于 2009-05-01T18:12:11.733 に答える
4

チケット再: SelectDateWidget のドキュメントの欠如: チケット #7437

次のように使用する必要があるようです。

widget=forms.extras.widgets.SelectDateWidget()

括弧は例です。

于 2009-05-01T05:45:29.580 に答える
1

ここにform.pyがあります

from django import forms
from django.forms import extras

DOY = ('1980', '1981', '1982', '1983', '1984', '1985', '1986', '1987',
       '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995',
       '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003',
       '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011',
       '2012', '2013', '2014', '2015')


DOB = forms.DateField(widget=extras.SelectDateWidget(years = DOY))
于 2015-02-04T15:39:56.730 に答える
0

あなたのコードは、書かれているとおりにうまく機能します。このような場合は、モデルとフォームのフィールドの名前が一致していないか ( DOBvsdobは簡単にタイプミスします)、ビューで正しいフォームをインスタンス化し、それをテンプレートに渡したかどうかを確認してください。

于 2009-05-01T12:40:00.333 に答える