Django で単純なモデルを定義しました。
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 を返す必要があります。
注: フォームを使用せずにこの検証を解決しようとしています。