__init__() 得到了一个意外的关键字参数“min_length”

air*_*aft 2 django django-models

我收到以下错误:

...
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 227, in wrapper
    fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/luowensheng/Desktop/QIYUN/Project/officialWeb/frontend/models.py", line 93, in <module>
    class User(models.Model):
  File "/Users/luowensheng/Desktop/QIYUN/Project/officialWeb/frontend/models.py", line 97, in User
    phone = models.CharField(min_length=11, max_length=11)
  File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/db/models/fields/__init__.py", line 1061, in __init__
    super(CharField, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'min_length'
Run Code Online (Sandbox Code Playgroud)

我的模型代码如下:

class User(models.Model):
    username = models.CharField(max_length=16)
    password = models.CharField(max_length=16)
    real_name = models.CharField(max_length=12)
    phone = models.CharField(min_length=11, max_length=11) # this is the line 97 
    email = models.EmailField()
    qq = models.CharField(max_length=10)
    address = models.CharField(max_length=64)  
    id_card = models.CharField(min_length = 18, max_length=18)
    id_card_img_front = models.CharField(max_length=256)
    id_card_img_back = models.CharField(max_length=256)
    nickname = models.CharField(max_length=16)
    profile = models.CharField(max_length=256)
Run Code Online (Sandbox Code Playgroud)

为什么我得到那个错误?顺便说一句,是否有更好的方法将电话长度限制为11

Ala*_*air 5

正如错误所暗示的那样,CharField没有min_length选择。您可以使用MinLengthValidator替代

from django.core.validators import MinLengthValidator

class User(models.Model):
    phone = models.CharField(max_length=11, validators=[MinLengthValidator(11)])
Run Code Online (Sandbox Code Playgroud)