자주 사용하기 전에 일부 양식 데이터를 필터링해야합니다 (데이터베이스에 저장하는 등). 공백을 제거하고 반복 공백을 하나의 공백으로 대체하려고한다고 가정 해 봅니다. 텍스트 필드 중 많은 형태로 나타납니다. 그것은 clean_<fieldname>
방법을 사용하여이 작업을 수행하기 어렵지 않다 :Django : 양식 필드를 정리하고 코드 중복을 피하는 방법
# Simplified model with two text fields
class MyModel(models.Model):
title = models.CharField()
description = models.CharField()
# Model-based form
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
def clean_title(self):
title = self.cleaned_data['title']
return re.sub(r'\s{2,}', ' ', title.strip())
def clean_description(self):
description = self.cleaned_data['description']
return re.sub(r'\s{2,}', ' ', description.strip())
내가 필요 정확히 수행하고, 내가 좋아하는 멋진 부작용이있다 : 사용자는 공백을 입력하면 필드가 비어 있으므로 유효하지 않은 것으로 간주됩니다 (필요하다면) ValidationError
을 던질 필요조차 없습니다.
명백한 문제는 코드 중복입니다. 나는 그것에 대해 몇 가지 기능을 만듭니다하더라도, my_text_filter
말, 내 모든 형태의 모든 텍스트 필드를 호출해야합니다 :
from myproject.filters import my_text_filter
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
def clean_title(self):
return my_text_filter(self.cleaned_data['title'])
def clean_description(self):
return my_text_filter(self.cleaned_data['description'])
질문 : 장고의 모든 표준 및 간단한 방법 (이 (예를 들어, validators = {'title': my_text_filter, 'description': my_text_filter}
을 MyModel
에 추가하는 것과 같이) 또는 적어도 더 많거나 적은 표준 해결 방법을 사용하여이 작업을 수행하려면 버전 1.2를 사용하십시오. 설명서에서 폼 유효성 검사기와 유효성 검사기를 읽었지만 필요한 부분을 찾을 수 없습니다.
당신이 대신 각 필드에 대해 하나를 작성하는 형태의'clean' mehod를 사용할 수 있습니다 한 번에 두 개 이상의 필드에 대한 뭔가를하려는 경우 ! –