我正在使用MySQL组建一个Django站点。不幸的是,我无法弄清楚如何将我的模式放在一起。
我有一个Users表,一个Tasks表和一个Session表。
每个用户一次可以有3个活动任务。每个用户可以在每个工作会话中更新(设置为完成,失败或保持打开)这三个任务。如果用户完成任务(即少于三个打开的任务),则下次他们创建会话时,他们将有机会创建新任务。最后一部分很容易编写代码,它是支持表格架构的逻辑,给我带来了麻烦。
我的问题是我不知道如何正确建模。起初我想在Session表中包含3个单独的列,其中外键指向Task表。但是,从我正在阅读的内容来看,我看起来并不像我可以添加3个引用同一个表的不同实例的外键。或者,我考虑在会话和任务之间创建多对多表。但是,我是否必须为每个打开的会话创建三个表条目?这似乎很快就会失控,而且对我来说也似乎很草率。
老实说,我完全不知道如何对此进行建模。我真的很感激任何帮助或意见。
谢谢
答案 0 :(得分:0)
像这样的东西
class Task(models.Model):
name = models.CharField(max_length=50)
class MyUser(models.Model):
user = models.OneToOneField(User)
task_1 = models.ForeignKey(Task)
task_2 = models.ForeignKey(Task)
task_3 = models.ForeignKey(Task)
答案 1 :(得分:0)
已更新:在Django中从另一个模型(表)多次引用同一模型(表)时,必须添加 related_name 参数。
class Task(models.Model):
name = models.CharField(max_length=50)
class MyUser(models.Model):
user = models.OneToOneField(User)
task_1 = models.ForeignKey(Task, related_name='task_one')
task_2 = models.ForeignKey(Task related_name='task_two')
task_3 = models.ForeignKey(Task related_name='task_three')