【发布时间】:2020-05-07 14:32:43
【问题描述】:
我有一个模型,我可以在其中存储我健身房的重复训练。
DAYS_OF_WEEK = (
(0, _("Monday")),
(1, _("Tuesday")),
(2, _("Wednesday")),
(3, _("Thursday")),
(4, _("Friday")),
(5, _("Saturday")),
(6, _("Sunday")),
)
class RecurringSession(models.Model):
session = models.ForeignKey(SessionType, db_index=True, on_delete=models.CASCADE)
dayofweek = models.PositiveSmallIntegerField(choices=DAYS_OF_WEEK)
time = models.TimeField()
但是,有些课程每周上一次以上。在该模型字段上存储多个值(1 到 7 之间)的最佳方法是什么? 我正在使用 Django Mysql 8.0,据我了解,它支持 JSON 字段,但从 django 文档看来,到目前为止只有 Postgres 支持。 有没有特定的 django 方法可以做到这一点?也许存储带有逗号分隔值的字符域? 我不需要按那个字段搜索。
每周都会有一个 cronjob 读取这个模型并在另一个模型上创建每个会话的实例。 (我需要每个会话作为自定义实例:教师替换、会话花名册、会话状态 - 我可能会在银行假日或其他原因取消单个会话)。 所以这个“RecurringSessions”将是我存储每周生成的会话信息的地方。 我最初编写的方式将在同一会话的一周中的每一天都有一个模型实例,但我想将它们分组在同一个实例中,因为我认为它看起来更好并且可能更容易设置老师块。 或者,我可以为每个会话存储一个带有多个日期/时间值的 dict 的 json,但这会使确保如果 cronjob 运行两次,则该类不会被重复变得更加困难。
现在,为避免这种情况,我的日程表模型中有一个 UniqueConstraint,其中包含“day”、“time”和“room”字段
使用 Django 3.0.6、Python 3.8.2 和 MySQL 8.0.20。
谢谢
【问题讨论】:
标签: django django-models