1

私のDjangoベースのアプリは、2つのクラスを使用してモデル化された予約カレンダーを維持しています:CalendarCalendarDayCalendarはさまざまなモデルクラスの集合体であり、その中にはがありCalendarDayます。CalendarDayは実際の「肉」であり、予約情報を保持します。

管理アプリで、両方のモデルクラスをカレンダーとして一緒に表示したいと思います。xか月を続けて、各月をカレンダー月としてフォーマットします(上部の曜日と週ごとにフォーマットされた月の日)。

これは標準のDjango管理インターフェースの機能を超えているため、最小限の変更を使用して管理インターフェース内にこれを実装する可能性を検討しています。これまでのところ、私は次のアプローチを考え出しました。

  1. DjangoFormsAPIを使用してカスタムフォームクラスを作成します。

  2. どういうわけか、管理アプリにカスタムフォームクラスを登録します。

  3. フォームをHTMLにレンダリングするカスタムテンプレートを作成します。

  4. どういうわけか、カスタムフォームをCalendar管理アプリケーションのリスト表示から選択されたインスタンスにバインドします。データのディクショナリをコンストラクターに渡すことでフォームをデータにバインドできることは知っていますが、管理フォームでこれを行う方法がわかりません。

私の質問:これは実行可能なアプローチですか?もしそうなら、[2]と[4]についてどうすればよいでしょうか?

4

1 に答える 1

4

実際、思ったよりずっと簡単でした。HTMLCalendar のサブクラスと共に、この投稿に基づいてカスタム ウィジェットを実装することになりました。

編集: この回答で説明されているアプローチは機能しましたが、最終結果には完全に満足していませんでした。それはかなり複雑なハックになりすぎました。私の質問で説明されているように、元の思考の流れに沿ってソリューションを作り直しました。これも簡単でした。

  • herechange_form.htmlの説明に従ってファイルを移動しました。
  • そのテンプレートを変更し、新しいブロックを追加して、予約カレンダーをレンダリングできるテンプレートを含めました。
  • Python のクラスをサブクラス化して、モデルのオブジェクトをHTMLCalendar処理し、カレンダーで毎日のさまざまな状態を表示するために必要な を生成できるようにしました。CalendarDayCalendarCSS styles

新しい を最初に作成するとCalendar、テンプレートは、CalendarDayまだオブジェクトがないことを示すメッセージをユーザーに適切に表示します。

最終結果:

ここに画像の説明を入力

于 2012-12-25T09:03:27.373 に答える