我有一个这样的模型:
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
不是强制性的。我该如何覆盖模型验证呢?这样的事情可以通过getattr
和setattr
来实现吗?
答案 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)