확인 :장고 - 내가 장고에 간단한 모델을 정의 모델 필드 형식
class Student(models.Model):
s_name = models.CharField(max_length=32)
s_gpa = models.FloatField(min=0.0, max=5.0, default=5.0)
s_year = models.IntegerField(min=1, max=10, default=1)
s_registered = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.username
def modify(self, **kwargs):
if valid(self, kwargs):
for k,v in kwargs.iteritems():
setattr(self, k, v)
self.save()
def valid(s, kwargs):
# For all k,v pairs in kwargs
# (1) Checks if k is one of the attributes of s. Returns False if fails.
# (2) Checks if v fits the format defined for attribute k of s.
# Returns False if fails.
# Returns True if reaches this point.
은 내가 코멘트에 설명 된 명령을 실행하고 싶은 유효한 기능을 쓰고 있어요. 를 들어
(1), 나는 와 도움이 필요
if k not in s.__dict__: return False
를 사용 (2).
값이 속성 (Django 모델 필드)에 대해 정의 된 형식에 맞는 지 어떻게 확인할 수 있습니까?
예 : valid (s_name = True) 및 valid (s_name = 33 * 'a')는 모두 False를 반환해야합니다.
참고 : 양식을 사용하지 않고이 유효성 검사를 해결하려고합니다.
를 - 그것은 첫 번째 인수로 '자기'를 사용하는 것이 일반적이다 귀하의 방법에 - http://www.python.org/dev/peps/pep-0008/#function-and-method-arguments –
그것을 지적 해 주신 Aidan.사실, 제 의도는 학생과 독립적 인 유효한 것입니다. 별도의 유틸리티 모듈에서 가져옵니다. 제가 학생의 정의 안에 남겨 두었던 것은 사고였습니다. 내 관심을 불러 주셔서 다시 한번 감사드립니다. –
나는 그것이 그 길을 확신하지 못했습니다. 업데이트 된 답변을 살펴보고 모델 유효성 검사 문서를 한눈에 볼 수 있습니다. –