所以我正在开发一个课程大纲应用程序。每个教学大纲都有一个或多个班级会议时间、开始日期、结束日期。我希望能够根据管理表单中的这些信息为每个教学大纲自动生成一组课堂会议。这个想法很简单,用户应该能够输入会议时间、开始日期和结束日期,点击一个按钮,然后让 django 创建用户可以编辑的内联类会话对象。因此,例如,如果我有一个班级在 5 月 1 日至 9 月 1 日之间的每周二开会,我应该能够点击一个按钮,并获得班级会议——或者至少是班级会议表格,没有理由将它们保存在数据库中,直到它们被填写——在这些日期之间的每个星期二。
相关型号代码如下:
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 是高度通用的,并且对它所呈现的模型一无所知,所以我看不到让按钮与函数对话。
所以在我看来,问题是三个方面:
- 如何向生成新 ClassSessionInlines 的函数提供重复上课时间?
- 如何在管理页面上创建它们?
- 我如何填充他们的字段?