验证models.CharField如果在Django admin中勾选models.BooleanField

时间:2011-12-16 10:17:17

标签: django django-admin

作为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不能为空。

我只是学习如何验证单个文本字段,但是如果基于其他一些字段验证文本字段会怎么样?

感谢。

1 个答案:

答案 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约定。