私はDjangoでカレンダーアプリケーションを開発しています。
関連するモデル構造は次のとおりです。
class Lesson(models.Model):
RECURRENCE_CHOICES = (
(0, 'None'),
(1, 'Daily'),
(7, 'Weekly'),
(14, 'Biweekly')
)
frequency = models.IntegerField(choices=RECURRENCE_CHOICES)
lessonTime = models.TimeField('Lesson Time')
startDate = models.DateField('Start Date')
endDate = models.DateField('End Date')
student = models.ForeignKey(Student)
class CancelledLesson(models.Model):
lesson = models.ForeignKey(Lesson)
student = models.ForeignKey(Student)
cancelledLessonDate = models.DateField() # Actual date lesson has been cancelled, this is startDate + Frequency
class PaidLesson(models.Model):
lesson = models.ForeignKey(Lesson)
student = models.ForeignKey(Student)
actualDate = models.DateField() # Actual date lesson took place
paidAmt = models.DecimalField('Amount Paid', max_digits=5, decimal_places=2)
paidDate = models.DateField('date paid')
class CompositeLesson(models.Model):
# only used to aggregate lessons for individual lesson management
lesson = models.ForeignKey(Lesson)
student = models.ForeignKey(Student)
actualDate = models.DateTimeField()
isCancelled = models.BooleanField()
canLesson = models.ForeignKey(CancelledLesson, blank=True, null=True)
payLesson = models.ForeignKey(PaidLesson, blank=True, null=True)
どうやらこれはすべて、特定の学生に属するレッスンの表示に問題を引き起こしています。私がやろうとしているのは、生徒の名前とスケジュールされたレッスンのすべてのインスタンスを示すテーブルを表示することです。データベースが破壊されないように、繰り返しを動的に計算しています。繰り返しの例外(つまり、レッスンのキャンセル)は、独自のテーブルに保存されます。繰り返しは、繰り返しが生成されるときに、キャンセルされたレッスンテーブルに対してチェックされます。
繰り返しを生成するための私のコード(およびこれが引き起こしている問題の小さなカタログ)をここで参照してください:Djangoテンプレートに表示するキーを取得できません
私はPythonに比較的不慣れであり、このプロジェクトを多くの概念に頭を悩ませる方法として使用しているので、本質的に「Pythonic」である何かを見逃している場合は、お詫び申し上げます。