我正在尝试找到有关如何构建代表以下内容的模型的指导:
我实施了一个足以反映前两点的模型(至少,我认为是这样),但特别是最后一点似乎很麻烦。
充分意味着,使用此实现,使用交叉表的关系是可选,而不是必需的。目前这没关系,但从长远来看不行。
<md-select placeholder="country" [(ngModel)]="selectedOption" formControlName="country_id">
<md-option *ngFor="let country of countries" value="{{country.id}}">{{ country.name }}</md-option>
</md-select>
所以我的问题是:
我通常是在正确的轨道上,但是不能只关注模型而捕捉最后一个约束?
什么是优雅的方式?
答案 0 :(得分:0)
我们为EnvironmentSLA模型实现了save()方法,该方法执行以下操作:
save() - 函数如下所示:
class EnvironmentSLA(models.Model):
[...]
def save(self, *args, **kwargs):
if self.state != self.EFFECTIVE:
super(EnvironmentSLA, self).save(*args, **kwargs)
return
try:
effective_sla = EnvironmentSLA.objects.filter(environment=self.environment, state=self.EFFECTIVE).get()
except Exception as e:
effective_sla = None
if effective_sla:
effective_sla.state = self.DEPRECATED
effective_sla.save()
super(EnvironmentSLA, self).save(*args, **kwargs)
这样我们就不会失去定义的SLA,但总是只有一个有效的SLA。