我有以下 Django 模型:-
class Company(models.Model):
name = models.CharField(max_length=50)
is_active = models.BooleanField(db_index=True)
class Phase(models.Model):
company = models.ForeignKey(Company)
name = models.CharField(max_length=50)
is_active = models.BooleanField(db_index=True)
class Process(models.Model):
company = models.ForeignKey(Company)
name = models.CharField(max_length=50)
phases = models.ManyToManyField(Phase, through='ProcessPhase')
is_active = models.BooleanField(db_index=True)
class ProcessPhase(models.Model):
process = models.ForeignKey(Process)
phase = models.ForeignKey(Phase)
order = models.PositiveIntegerField(help_text="At what step of your process will this phase occur?", unique=True)
一个“公司”有它的“过程”和“阶段”。(公司的)流程由(公司的)一个或多个阶段组成。与流程相关的每个阶段都有一个“顺序”。要求是: -
- 在公司的特定流程中,一个阶段只能出现一次;
- 进程中的“阶段A”和“阶段B”也不能具有相同的顺序。
所以我需要知道:-
a) 如何在模型定义中指定一些“唯一”来满足上述要求;
b) ManyToManyField 自动暗示了哪些唯一性(如果有)?