【发布时间】:2010-06-01 10:03:31
【问题描述】:
是否可以在 django 模型对象上设置基于表达式的约束,例如如果我想施加一个约束,即所有者只能拥有一个未处于过期状态的给定类型的小部件,但只要它们过期,就可以拥有尽可能多的其他小部件。显然我可以通过覆盖保存方法来做到这一点,但我想知道是否可以通过设置约束来完成,例如unique_together 约束的一些导数
WIDGET_STATE_CHOICES = (
('NEW', 'NEW'),
('ACTIVE', 'ACTIVE'),
('EXPIRED', 'EXPIRED')
)
class MyWidget(models.Model):
owner = models.CharField(max_length=64)
widget_type = models.CharField(max_length = 10)
widget_state = models.CharField(max_length = 10, choices = WIDGET_STATE_CHOICES)
#I'd like to be able to do something like
class Meta:
unique_together = (("owner","widget_type","widget_state" != 'EXPIRED')
【问题讨论】: