每个字段django模型的自定义验证

时间:2014-09-12 07:10:02

标签: python django django-models

我有一个这样的模型:

TYPES = (('hi', 'hi'), ('hello', 'hello'))
class Test(models.Model):
    name = models.CharField(max_length=255)
    phonenumber = models.CharField(max_length=255) # hi
    address = models.CharField(max_length=255) # hello
    kind = models.CharField(max_length=5, choices=TYPES)

正如您现在所看到的,每个字段都是必填字段。我想要实现的目标如下:

if kind == 'hi':使address不是强制性的,if kind == 'hello'使phonenumber不是强制性的。我该如何覆盖模型验证呢?这样的事情可以通过getattrsetattr来实现吗?

1 个答案:

答案 0 :(得分:0)

您可以覆盖save()

class Test(modesl.Model):
    ## .....
    def save(self, *args, **kwargs):
        # ....
        if kind == 'hi':
             self.adress = "what you want"
        #.....
        super(Test, self).save(*args, **kwargs)