django - 删除自定义验证器后,Django 崩溃并且无法恢复到运行备份。漏洞?

标签 django validation attributeerror

这是一个奇怪的问题,我觉得它可能与错误有关。

在 models.py 中我创建了一个自定义验证器

def validate_accecpt_terms(value):
    if value != True:
        raise ValidationError(u'Sorry but you must accecpt the terms to continue')

class Sheet(SheetBase):
    authorized  = models.BooleanField(default=False,validators=[
                  validate_accecpt_terms,
                  ])

按预期工作。但奇怪的是,我可以从 BooleanField 中删除验证器,并且验证器不再运行(按预期),但是当我删除方法 validate_accecpt_terms() ,然后对 manage.py 执行任何操作时,我会收到如下错误:

(django-proj)user@ubuntu:~/django-proj/bin/first_project$ python manage.py runserver 192.168.1.3:8001Performing system checks...

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x7f8bf6fba8c0>
Traceback (most recent call last):
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/utils/autoreload.py", line 222, in wrapper
    fn(*args, **kwargs)
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/core/management/commands/runserver.py", line 107, in inner_run
    self.check_migrations()
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/core/management/commands/runserver.py", line 159, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/db/migrations/executor.py", line 17, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/db/migrations/loader.py", line 48, in __init__
    self.build_graph()
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/db/migrations/loader.py", line 173, in build_graph
    self.load_disk()
  File "/home/user/django-initial/local/lib/python2.7/site-packages/Django-1.7.1-py2.7.egg/django/db/migrations/loader.py", line 103, in load_disk
    migration_module = import_module("%s.%s" % (module_name, migration_name))
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/user/django-initial/bin/first_project/process_forms/migrations/0025_auto_20141129_0848.py", line 9, in <module>
    class Migration(migrations.Migration):
  File "/home/user/django-initial/bin/first_project/process_forms/migrations/0025_auto_20141129_0848.py", line 19, in Migration
    field=models.BooleanField(default=False, validators=[process_forms.models.validate_accecpt_terms]),
AttributeError: 'module' object has no attribute 'validate_accecpt_terms'
 in Migration
    field=models.BooleanField(default=False, validators=[process_forms.models.validate_accecpt_terms]),
AttributeError: 'module' object has no attribute 'validate_accecpt_terms'

属性错误:“模块”对象没有属性“validate_accecpt_terms”

因此,为了现在使用我的应用程序而不导致 Django 崩溃,我必须使用简单的 pass 语句将该方法添加回 models.py 以满足要求:

def validate_accecpt_terms(value):
    """
        After creating this method and assigning it as a validator,
        If this method is ever deleted Django will crash.
        So a blank method must now reside in its place. Why?
    """
    pass 
class Sheet(SheetBase):
    authorized  = models.BooleanField(default=False)

我尝试过重新启动服务器、重置数据库、syncdb、迁移.. 任何关于 Django 想法的见解以及清除这种依赖性的方法都会非常有帮助! 谢谢!!

最佳答案

事实证明,我没有尝试的一件事是删除迁移数据,这确实成功了。

关于django - 删除自定义验证器后,Django 崩溃并且无法恢复到运行备份。漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200756/

相关文章:

javascript - 插入的 HTML 不响应 jQuery

javascript - 为什么名为 'index.js' 的 JavaScript 文件在 Django 模板中不起作用?

java - 如何验证 Spring-Boot 映射实体

Python: 'NoneType' 对象没有属性 'get_username'

python - 使用 Python Social-auth 如何从自定义管道检索存储在 session 中的字段

jquery - 如何使用 django 和 JSONP 从我的其他网站加载内容?

regex - 什么是验证字符串只有字母数字和连字符的惯用 clojure?

验证注释和属性文件

Django: AttributeError: 'NoneType' 对象没有属性 'username'

python - AttributeError: 'module' 对象没有属性 'connection'