13

Djangoで次の状況を適切に処理する方法がわからないようです。

モデルに日付範囲があり、2つの別々のフィールドとして保存しdate_startますdate_end

start_date = models.DateTimeField()
end_date = models.DateTimeField()

このモデルのフォームでは、これを1つのフィールドとして、1つのラベルで表現したいと思います。

timespan = forms.Field(widget=widgets.SelectDateRangeWidget(), label="Date Range")

現在のように、MultiWidgetを拡張してSelectDateRangeWidget:を作成しました。

class SelectDateRangeWidget(forms.MultiWidget):
    ...

次に、2つのDateウィジェットが組み込まれます。これを使用したいのですが、2つの別々のモデルフィールドにクリーンアップし、初期データをフォームフィールドにロードする機能も保持します。initialフォームの関数で、毎回これら2つのフィールドの値を手動で設定し、手動でこれら2つのモデルフィールドにクリーンアップする唯一の方法です__init__。または、これを行うためのよりクリーンな(いわば)方法があります。 ?

4

1 に答える 1

10

現在のウィジェット API を使用する django では不可能なようです。チケットは最も古い django チケットの 1 つで、7 年前のものです: https://code.djangoproject.com/ticket/27

モデル フォームから元の 2 つのフィールドを除外し、新しいフィールドを作成して、フォームの保存方法をオーバーライドすることができます。

于 2012-02-18T15:26:55.463 に答える