2010-06-01 3 views
2

장고 모델 개체에 식 기반 제약 조건을 설정할 수 있습니까? 소유자가 만료 된 상태가 아닌 특정 유형의 위젯 하나만 가질 수있는 제한 조건을 적용하려고하지만 만료되는 한 다른 유형의 위젯을 가질 수있는 경우. save 메소드를 오버라이드 (override)함으로써이 작업을 수행 할 수 있지만, 제약 조건을 설정하여이를 수행 할 수 있는지 궁금하다. unique_together 제약 조건의 일부 파생어Django - 식 기반 모델 제약

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') 

답변

2

이 장고 1.2의 새로운 model validation support위한 작업 같은 소리를 지적으로, 모델 유효성 검사를 사용하여 -

그래도, 당신은 당신이 말한대로, 저장()에서 할 수 있습니다.