【发布时间】:2017-10-21 19:16:08
【问题描述】:
我正在尝试为以下场景创建模型:
一个项目被交付并且必须以一定的顺序通过各种任务。 一旦项目通过任务,该任务就会被标记为已完成。 任务的名称是预先知道的。
例如:
- 创建项目
- 任务 1“注册项目”
- 任务 2“安装项目”
- 任务 3“检查项目日志”
我从一个像这样的简单模型开始,但对我来说它看起来非常静态,而不是我真正想要的。
models.py
class Item(models.Model):
item_id = models.PositiveIntegerField()
item_priority = models.PositiveSmallIntegerField(default=2)
item_date_created = models.DateField(auto_now_add=True)
task1_name = models.CharField(max_length=128)
task1_done_by = models.CharField(max_length=64, blank=True)
task1_done_date = models.DateField(null=True, blank=True)
task2_name = models.CharField(max_length=128)
task2_done_by = models.CharField(max_length=64, blank=True)
task2_done_date = models.DateField(null=True, blank=True)
# ... next 20 tasks
def __str__(self):
return str(self.item_id)
尝试使用关系字段,例如一个多对多字段来预定义任务,我最终得到了这个:
class Task(models.Model):
name = models.CharField(max_length=128)
done_by = models.CharField(max_length=64, blank=True)
done_date = models.DateField(null=True, blank=True)
class Item(models.Model):
item_id = models.PositiveIntegerField()
item_priority = models.PositiveSmallIntegerField(default=2)
item_date_created = models.DateField(auto_now_add=True)
tasks = models.ManyToManyField(Task)
但是,如果我创建两个具有相同任务的项目并将第一个项目的任务标记为已完成,那么第二个项目中的任务也会被标记为已完成 -- 这不是我想要的。
如何将任务分配给特定项目?或者哪种其他模型最适合我的场景?
【问题讨论】:
标签: django django-models