모델 필드의 유효성 검사는 어디에서 django로 가야합니까?Django 모델 필드 유효성 검사
모델의 오버로드 된 .save() 메소드 또는 모델의 .to_python() 메소드에서 이름을 지정할 수 있습니다. 필드 하위 클래스 (분명히 사용자 정의 필드를 작성해야합니다) .
가능한 사용 사례 :
- 이 보장하는 절대적이 켜지지입니다는, 빈 문자열은 데이터베이스에 기록되지 않습니다 (빈 = 거짓 키워드 인수가 여기에 작동하지 않습니다, 그것은 양식입니다 그것은 "선택"키워드 인수는 데시벨 수준에 존경과 열거 데이터 유형을) 모방뿐만 아니라 관리 인터페이스에서 (종류 도착 것을 보장하기 위해이 켜지지 때 유효성 검사 만) 는 는
도있다
empty_strings_allowed
. models.Field 기본 클래스 정의 및 파생 클래스는 행복하게 재정의하지만 데이터베이스 수준에 아무런 영향을주지 않는 것으로 보입니다. 따라서 빈 문자열 필드가있는 모델을 만들고 데이터베이스에 저장할 수 있습니다. 어느 것을 피하고 싶습니다 (예, 필요합니다). class CustomField(models.CharField):
__metaclass__ = models.SubfieldBase
def to_python(self, value):
if not value:
raise IntegrityError(_('Empty string not allowed'))
return models.CharField.to_python(self, value)
모델 수준 :
가능한 구현 필드 레벨에
이다 아마도
class MyModel(models.Model)
FIELD1_CHOICES = ['foo', 'bar', 'baz']
field1 = models.CharField(max_length=255,
choices=[(item,item) for item in FIELD1_CHOICES])
def save(self, force_insert=False, force_update=False):
if self.field1 not in MyModel.FIELD1_CHOICES:
raise IntegrityError(_('Invalid value of field1'))
# this can, of course, be made more generic
models.Model.save(self, force_insert, force_update)
, 내가 뭔가를 놓친 거지이 쉽게 수행 할 수 있습니다 (그리고 청소기)? 난 당신이 "명확하게"이해한다면
위대한, 위대한, 이건 그냥 대단해! 내가 소스를 통해 건너 뛴다. (그런데, 트렁크로 할 수있는 것처럼 문서에 접근 할 수있는 방법이 있는가?) 내가 필요로하는 것처럼 보인다. 내 말은, 나는 모두 내 자신을 굴리기위한 것이지만, 장고는 일을하는 통일 된 방법을 제공함에있어서 우수하다고 (잘, IMO, 어쨌든). – shylent
해당 분기를 확인하고 docutils 및 Sphinx가 설치되어 있는지 확인한 다음 docs/디렉토리로 이동하여 "make html"을 실행하십시오. Django 웹 사이트에있는 것처럼 HTML 형식으로 문서를 작성해야하며 로컬로 액세스 할 수 있습니다. –
필자는 문서가 모델 유효성 검사에 대해 아무 것도 말하지 않았기 때문에 소스 (특히'models/fields/__ init __. py', models/base.py 및 core/validators.py)를 읽지 않았습니다. 그러나 양식 유효성 검사와 거의 동일하게 작동한다는 점에 유의해야합니다 (적어도 일반 논리는 거의 동일합니다). 어쨌든, 이것은 제가 찾고 있었던 것입니다. 트렁크에서이 지점으로 전환하면 내 앱이 끔찍하게 부서지지 않기를 바랍니다. – shylent