Можно ли установить ограничение на основе выражений для объекта модели Django, например, Если я хочу наложить ограничение, где владелец может иметь только один виджет заданного типа, который не находится в состоянии с истекшим сроком, но может иметь столько же, сколько истек. Очевидно, что я могу сделать это, переопределив метод save, но мне интересно, можно ли это сделать, установив ограничения, например, некоторая производная от ограничения 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')