だから私はコースシラバスアプリに取り組んでいます。各シラバスには、1 つまたは複数のクラスのミーティング時間、開始日、終了日があります。管理フォーム内のこの情報に基づいて、シラバスごとに一連のクラス会議を自動的に生成できるようにしたいと考えています。アイデアは、ユーザーが会議の時間、開始日、終了日を入力し、ボタンを押して、ユーザーが編集できるインライン クラス セッション オブジェクトを django に作成させることができるようにすることです。たとえば、5 月 1 日から 9 月 1 日までの毎週火曜日の 1 時から 3 時までのクラスがある場合、ボタンを押してクラス セッションを取得できるはずです。少なくともクラス セッション フォームを取得する必要はありません。それらの日付の間の毎週火曜日に、それらが入力されるまでデータベースに保存します。
関連するモデル コードは次のとおりです。
class Syllabus (models.Model):
name = models.CharField(max_length=120)
number = models.CharField(max_length=32, blank = True)
start_date = models.DateField()
end_date = models.DateField()
class DaysTime(models.Model):
days = MultiSelectField(max_length=15, choices=WEEKDAYS)
startTime = models.TimeField()
endTime = models.TimeField()
class Meta:
abstract = True
class ClassTime(DaysTime):
key = models.ForeignKey('Syllabus')
class EventAbstract (models.Model):
name = models.CharField(max_length=120)
description = models.TextField(blank = True)
startDateTime = models.DateTimeField()
endDateTime = models.DateTimeField(blank = True)
class Meta:
abstract=True
class ClassSession(EventAbstract):
cancelled = models.BooleanField(default = False)
syllabus = models.ForeignKey('Syllabus')
date = models.DateField()
日付と日付の ClassSessions を生成することは問題ではありません。カスタム管理テンプレートにボタンを追加して change_form を拡張することも問題ではありません。change_form は非常に汎用的であり、それが提示するモデルについて何も知らないため、ボタンを関数に話しかけさせる方法はありません。
私が見ているように、問題は3つあります。
- 新しい ClassSessionInlines を生成する関数に定期的なクラス時間を提供するにはどうすればよいですか?
- 管理ページでそれらを作成するにはどうすればよいですか?
- フィールドに入力するにはどうすればよいですか?