models.py for books应用的内容。Django模型手机字段
from django.db import models
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
class Author(models.Model):
name = models.CharField(max_length=30, unique=True)
email = models.EmailField(max_length=50)
phone = models.IntegerField(max_length=10, unique=True, validators=[RegexValidator(regex='^\d{10}$', message='Length has to be 10', code='Invalid number')])
# phone = models.IntegerField(max_length=10)
def __unicode__(self):
return self.name
在这里的Author类,我要手机号码只接受长10位,我会用一个IntegerField如果它有一个MIN_LENGTH属性。
现在,这里是我的Django的壳
>>> from books.models import *
>>> p = Author(name='foo', email='[email protected]', phone='962027')
>>> p.save()
>>>
对于这种尝试,应该不是引发错误说手机领域是无效的(因为它不具有10位数字)?
我检查了表books_author,并添加了该行。
我在这里做错了什么?请帮忙。
你没有做错任何事。但请注意,您指定了'max_length',该字段可以具有的最大长度,并且像“962027”这样的值不会违反此规则。 – Bonifacio2
但它确实破坏了RegexValidator。 – Albin