作为Django的新手,我有一个问题要问,这应该很简单,但我无法理解:
我创建了一个类似下面的模型:
from django.db import models
from django.core.exceptions import ValidationError
def validate_case_id(value):
if value != "testing":
raise ValidationError("type testing")
class case_form3_tb(models.Model):
case_id = models.CharField(max_length=20, blank=True, null=True, verbose_name="Case ID", validators=[validate_case_id])
wound_others = models.BooleanField(verbose_name="Others")
wound_others_desc = models.CharField(max_length=200, blank=True, null=True, verbose_name="Others (Description)")
我想以一种方式验证它,如果勾选wound_others
,则wound_others_desc
不能为空。
我只是学习如何验证单个文本字段,但是如果基于其他一些字段验证文本字段会怎么样?
感谢。
答案 0 :(得分:3)
您应该validate at the model level,即为模型编写clean()
方法:
def clean(self):
from django.core.exceptions import ValidationError
if self.wound_others and not self.wound_others_desc:
raise ValidationError('Description must not be blank.')
作为旁注,您选择的型号名称是反pythonic。您应该始终遵循Python类名的CapWords约定。