迁移时出现django枚举字段错误

迁移时出现django枚举字段错误,django,django-models,Django,Django Models,我在数据模型中使用了一些枚举字段。我已经安装了django enumfield包。我的django版本是1.10.6,django enumfield版本是1.2.1 无论如何,当发布db迁移时,我得到以下错误 $python manage.py makemigrations 输出: Traceback (most recent call last): File "manage.py", line 22, in <module> execute_from_command_

我在数据模型中使用了一些枚举字段。我已经安装了django enumfield包。我的django版本是1.10.6,django enumfield版本是1.2.1

无论如何,当发布db迁移时,我得到以下错误

$python manage.py makemigrations

输出:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/core/management/__init__.py", line 341, in execute
    django.setup()
  File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/apps/config.py", line 199, in import_models
    self.models_module = import_module(models_module_name)
  File "/home/indikau/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/home/indikau/workspace/hotel_manager/manager/models.py", line 4, in <module>
    from django_enumfield import enum
  File "/usr/local/lib/python3.5/dist-packages/django_enumfield/enum.py", line 6, in <module>
    from django_enumfield.db.fields import EnumField
  File "/usr/local/lib/python3.5/dist-packages/django_enumfield/db/fields.py", line 8, in <module>
    class EnumField(six.with_metaclass(models.SubfieldBase, models.IntegerField)):
AttributeError: module 'django.db.models' has no attribute 'SubfieldBase'
回溯(最近一次呼叫最后一次):
文件“manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/usr/local/lib/python3.5/dist packages/Django-1.10.6-py3.5.egg/Django/core/management/_init__.py”,第367行,从命令行执行
utility.execute()
文件“/usr/local/lib/python3.5/dist packages/Django-1.10.6-py3.5.egg/Django/core/management/_init__.py”,执行中第341行
django.setup()
文件“/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/Django/u_init__;.py”,第27行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/Django/apps/registry.py”,第108行,填充
app_config.import_models(所有_models)
文件“/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/Django/apps/config.py”,第199行,在import\u模型中
self.models\u module=导入模块(models\u module\u name)
文件“/home/indikau/anaconda3/lib/python3.6/importlib/_init__.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第978行,在_gcd_import中
文件“”,第961行,在“查找”和“加载”中
文件“”,第950行,在“查找”和“加载”中解锁
文件“”,第655行,已加载
exec_模块中第678行的文件“”
文件“”,第205行,在调用中删除了帧
文件“/home/indikau/workspace/hotel_manager/manager/models.py”,第4行,在
从django_枚举字段导入枚举
文件“/usr/local/lib/python3.5/dist packages/django_enumfield/enum.py”,第6行,在
从django_enumfield.db.fields导入enumfield
文件“/usr/local/lib/python3.5/dist packages/django_enumfield/db/fields.py”,第8行,在
类EnumField(六个。带_元类(models.SubfieldBase,models.IntegerField)):
AttributeError:模块“django.db.models”没有属性“SubfieldBase”
有没有办法解决这个问题


谢谢。

子字段数据库从1.8开始就被弃用,并在1.10中被删除


这里似乎有一些解决方案:

我只能说enum是邪恶的(是的,请用谷歌搜索这个词)。所以这种努力是完全不值得的。那么还有别的解决办法吗?在使用选择字段时使用常量值是很乏味的。枚举并没有让它变得更简单:)