私が理解しているように、Djangoアプリケーションを作成すると、データはフォームによって検証されてから、モデルインスタンスに挿入され、データベースに書き込まれます。しかし、データモデルレイヤーに追加の保護レイヤーを作成したい場合、現在の「ベストプラクティス」の下で行ったことはありますか?レビューアの名前を省略したり、空白のままにしたりできないようにしています。ここで行ったように、カスタム検証を「clean」メソッドに入れてから、「save」で「full_clean」を呼び出して「clean」を呼び出す必要がありますか?そうでない場合、推奨される方法は何ですか?ありがとうございます。
class Reviewer(models.Model):
name = models.CharField(max_length=128, default=None)
def clean(self, *args, **kwargs):
if self.name == '':
raise ValidationError('Reviewer name cannot be blank')
super(Reviewer, self).clean(*args, **kwargs)
def full_clean(self, *args, **kwargs):
return self.clean(*args, **kwargs)
def save(self, *args, **kwargs):
self.full_clean()
super(Reviewer, self).save(*args, **kwargs)