2010-04-27 4 views
3

manytomanyfield에 3 가지 이상의 관계가 설정되어 있는지 확인하고 싶습니다. 모델의 많은 토템 필드를 제한하는 방법은 무엇입니까?

나는이 작업을 수행 할 청소 방법에 시도 :

if self.tags.count()>3: 
    raise ValidationError(_(u'You cannot add more than 3 tags')) 

그러나 self.tags 반환하지 현재 업데이트 ... 단지 저장된 객체.

액세스 권한이 있습니까?

감사합니다.

답변

3

두 가지 방법이 있습니다.

def save(self): 
    # this may not be the correct check... but it will be something like this 
    if self.tags.count() > 3: 
    # raise errors here 
    else: 
    super(MODEL_NAME,self).save() 

을 아니면보기에서 수동으로 할 수 있습니다 :

첫째, 당신은 같은 것을 할, 모델에서 모델의 저장()

의 일환으로 그것을 할 수 있습니다.

def some_view(request): 

    # all the request.POST checking goes here 

    the_model = form.save(commit=False) 
    if the_model.tags.count() > 3: 
    #error stuff 
    else: 
    the_model.save() 
+1

당신은 또한 폼 레벨에서 그것을 할 수 있고 당신의 요구 사항을 충족시키지 못하면'form.ValidationError'를 발생시킬 수 있습니다. – Amyth

-2

브랜트가 맞습니다. 그러나, 나는 당신이 원하는 것을하기위한 더 좋은 방법은 하나의 ManyToMany가 아닌 3 개의 개별 ForeignKey 필드를 사용하는 것이라고 생각한다.

+0

세 가지 외래 키가 null 필드와 우선 순위 (first_tag는 null이고, second_tag는 'food'임)를 의미하므로 몇 가지 문제가 발생합니다. 필터링은 어렵습니다. – fixmycode

관련 문제