2011-03-27 5 views
0

여기 버그를 알아낼 수 없습니다. 내 모델에 IntegerField (급여)가 있는데,이 모델의 필드 형식은 해당 modelform에서 재정의됩니다. 양식의 경우 RegexField에 급여를 추가하고 사용자 지정 유효성 검사를 추가하여 쉼표를 제거했습니다. 나는 또한 성공없이 모델 필드를 CharField로 만들려고 시도했다. 나는 modelform 유효성을 검사 할 때, 나는 잘못된 IntegerField에 대한 표준 오류 메시지 (이 값은 정수 여야합니다) 얻을장고 모델 폼 유효성 검사가 실패했습니다

@login_required 
def profile_settings(request): 
    page="account background" 
    user=User.objects.get(pk=request.user.id) 
    save_success=request.GET.get('save','') 
try: 
    profile=user.background_check_set.all()[0] 
    profileform=Background_CheckForm(instance=profile) 
    except IndexError: 
    profile='' 
    profileform=Background_CheckForm() 
    if request.method=='POST': 
    #might be able to work get_or_create_object method here 
     if profile: 
      profileform=Background_CheckForm(request.POST,instance=profile) 
     else: 
      profileform=Background_CheckForm(request.POST) 
     if profileform.is_valid(): 
      salary=profileform.cleaned_data['salary'] 
      profile=profileform.save(commit=False) 
      profile.user=user 
      profile.save() 
      return HttpResponseRedirect("/account/profile/settings/?save=1") 
     else: 
      return render_to_response('website/profile_settings.html', {'page':page, 'profileform':profileform}, context_instance=RequestContext(request)) 
    else: 
     return render_to_response("website/profile_settings.html", {'page':page,'profile':profile,'profileform':profileform,'save_success':save_success}, context_instance=RequestContext(request)) 

:

class Background_Check(models.Model):  
    user=models.ForeignKey(User, unique=True) 
    salary=models.IntegerField(blank=True,max_length=10) 

class Background_CheckForm(forms.ModelForm): 
    salary=forms.RegexField(label=_("Salary"), max_length=10, regex=r'^[\d\s,]+', 
    #help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."), 
    error_messages = {'invalid': _("Please enter a valid salary")}) 

    class Meta: 
    model=Background_Check 
    exclude=('user') 



def clean_salary(self): 
    salary=str(self.cleaned_data["salary"]) 
    re.sub(r'[,]','',salary) 
    return salary 

여기 내이다. 무슨 일 이니?

+0

이 양식을 어떻게 사용하고 있습니까? –

+0

내 서식 파일에 {{background_checkform.field}}와 같은 양식 필드를 표시 한 다음 내보기에서 .is_valid()로 처리합니다. – Ben

+0

내 뜻은보기를 표시하십시오. 마치이 양식을 사용하는 것처럼 보이지 않습니다. –

답변

1

귀하의 게시물에서 clean_salary() 메소드가 정확하게 들여 쓰기되지 않습니다. Background_CheckForm 클래스의 일부 여야합니다.

코드가 게시물과 같은 방법으로 들여 쓰기되어 있으면 clean_salary() 메서드가 호출되지 않으며 표준 오류 메시지가 분명히 표시됩니다.

관련 문제