SQLAlchemy““无”没有属性“标签””

问题描述

我已经阅读了有关枚举和sqlAlchemy的所有其他帖子,例如this one,但是当我基于它们创建示例时,出现错误'None' has no attribute 'label'。以下代码中的错误是什么?我没有Flask或sqlAlchemy的经验,因此可能有些琐碎。

我还尝试使用自定义ArrayOfEnum类和create_constraint=False,native_enum=False参数,但这无济于事,无论如何我的数据库中都有真正的枚举需要支持

当我只使用一个枚举时,当我使用flask run执行Flask-AppBuilder并打开http://127.0.0.1:5000/softwareproductview/add时,它可以正常工作。但是,当使用这样的枚举数组时,它总是崩溃:

from flask_appbuilder import Model,Base
from enum import Enum
from sqlalchemy import Column,String
import sqlalchemy.dialects.postgresql as pg
import sqlalchemy as sa

class Softwareproduct(Model):
    suffix = Column(String(200),primary_key=True)
    # jinja2.exceptions.UndefinedError: 'None' has no attribute 'label'
    databasesystems =  Column(pg.ARRAY(sa.Enum("MysqL","Postgresql")))                                                                                                                                                                                                                                                        
    #databasesystems = Column(sa.Enum("MysqL","Postgresql")) # works

完全错误

2020-08-31 18:01:48,646:ERROR:app:Exception on /softwareproductview/add [GET]
Traceback (most recent call last):
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/app.py",line 2447,in wsgi_app
    response = self.full_dispatch_request()
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/app.py",line 1952,in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/app.py",line 1821,in handle_user_exception
    reraise(exc_type,exc_value,tb)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/_compat.py",line 39,in reraise
    raise value
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/app.py",line 1950,in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/app.py",line 1936,in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/security/decorators.py",line 109,in wraps
    return f(self,*args,**kwargs)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/views.py",line 588,in add
    return self.render_template(
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/baseviews.py",line 280,in render_template
    return render_template(
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/templating.py",line 137,in render_template
    return _render(
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask/templating.py",line 120,in _render
    rv = template.render(context)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/jinja2/environment.py",line 1090,in render
    self.environment.handle_exception()
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/jinja2/environment.py",line 832,in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/jinja2/_compat.py",line 28,in reraise
    raise value.with_traceback(tb)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/general/model/add.html",line 2,in top-level template code
    {% import 'appbuilder/general/lib.html' as lib %}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/base.html",line 1,in top-level template code
    {% extends base_template %}
  File "/home/konrad/projekte/hito/database-frontend/app/templates/base.html",in top-level template code
    {% extends 'appbuilder/baselayout.html' %}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/baselayout.html",in top-level template code
    {% import 'appbuilder/baselib.html' as baselib %}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/init.html",line 46,in top-level template code
    {% block body %}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/baselayout.html",line 19,in block "body"
    {% block content %}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/general/model/add.html",line 7,in block "content"
    {% block add_form %}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/general/model/add.html",line 8,in block "add_form"
    {{ widgets.get('add')(form_action=form_action)|safe }}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/widgets.py",line 37,in __call__
    return template.render(args)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/jinja2/environment.py",in reraise
    raise value.with_traceback(tb)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/general/widgets/form.html",line 45,in top-level template code
    {{ lib.render_field(field,begin_sep_label,end_sep_label,begin_sep_field,end_sep_field) }}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/jinja2/runtime.py",line 679,in _invoke
    rv = self._func(*arguments)
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/flask_appbuilder/templates/appbuilder/general/lib.html",line 230,in template
    {{ field.label.text }}
  File "/home/konrad/projekte/hito/database-frontend/venv/lib/python3.8/site-packages/jinja2/environment.py",line 471,in getattr
    return getattr(obj,attribute)
jinja2.exceptions.UndefinedError: 'None' has no attribute 'label'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)