2015-01-26 9 views
-2

나는 이런 모델을 가지고있다. 팀 이름이 "러시아"인지 확인하려면 팀의 이름을 지정해야합니다.장고 모델에서 필드를 확인하는 방법?

I는 사용자가 양식에 데이터를 입력 할 때 확인하고 싶다.

어떻게 확인할 수 있습니까?

RUSSIA = 'RUS' 
USA = 'USA' 
GERMANY = 'GER' 


COUNTRY = (
    (RUSSIA, "Russia"), 
    (USA, "USA"), 
    (GERMANY, "Germany"), 
) 


class Country(models.Model): 

    country = models.CharField(max_length=3, choices=COUNTRY, default=RUSSIA) 
    name_of_team = models.CharField(max_length=255, blank=True, null=True) 

    def __unicode__(self): 
     return self.name_of_team 
+1

언제 이것을 확인 하시겠습니까? 형태로? –

+0

질문을 명확히 할 수 있습니까? 질문하는 내용이 완전히 명확하지 않습니다. 입력 내용의 유효성을 검사하려고합니까? '국가'를 만드는 데 사용하는 관련 양식이 있다면 그것을 포함하십시오. – shuttle87

+0

사용자가 양식에 데이터를 입력하면 확인하고 싶습니다. https://docs.djangoproject.com/en/1.7/ref/forms/validation/#form-and-field-validation – user2962768

답변

0

당신은 단순히 Country 모델에 대한 ModelFormclean 방법을 사용해야합니다

from django import forms 
from .models import Country, RUSSIA 


class CountryForm(forms.ModelForm): 

    class Meta: 
     model = Country 

    def clean(self): 
     cleaned_data = self.cleaned_data 

     country = cleaned_data.get('country') 
     name_of_team = cleaned_data.get('name_of_team') 

     if country == RUSSIA and not name_of_team: 
      self.add_error('name_of_team', 'You must supply a team name') 

     return cleaned_data 

이 양식 유효성 검사에 대한 자세한 내용은 https://docs.djangoproject.com/en/1.7/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other를 참조하십시오.

는 또한 명확성을 위해 Country 모델 내부의 선택 상수를 이동하는 것이 좋습니다 :

class Country(models.Model): 

    RUSSIA = 'RUS' 
    USA = 'USA' 
    GERMANY = 'GER' 


    COUNTRY_CHOICES = (
     (RUSSIA, "Russia"), 
     (USA, "USA"), 
     (GERMANY, "Germany"), 
    ) 

    country = models.CharField(max_length=3, choices=COUNTRY_CHOICES, 
     default=self.RUSSIA) 

다음 양식에 당신이 할 수 있습니다

. . . 

def clean(self): 
    . . . 

    if country == Country.RUSSIA and not name_of_team: 
     self.add_error('name_of_team', 'You must supply a team name') 

    return cleaned_data 

이 크게 개인 취향의 문제입니다, 내 의견으로는 더 나은 가독성을 제공합니다.

+0

가 대단히 감사합니다 :) – user2962768

+0

: 사용자 정의 유효성 검사와 modelform이 필요한 것처럼 @ shuttle87 – Brandon

관련 문제