我要实现的目标
我正在尝试在我的项目中建立一个Flask RESTful web服务。 我将所有数据存储在PostgreSQL数据库中。在我的项目中,我使用SQLAlchemy为我的表创建数据模型。在
我创建了一些抽象模型来向所有模型添加特定属性。 请参阅下面的代码。在
问题
我有一个表示系统用户的模型(UserModel)。当我想创建一个新用户时,我得到以下错误:
TypeError: __init__() got multiple values for argument 'user_type'
我的工作:
user = UserModel("user@test.com", "test", "user", UserType.admin)
我不明白为什么在我传递4个参数时,参数“user_type”将获得多个值。 init函数有5个,包括self属性。在
我怀疑抽象类,但我不确定。当我删除user_type参数和属性时,会出现以下错误:
TypeError: __init__() takes 4 positional arguments but 5 were given
用户模型.py
^{pr2}$基本模型.py
from datetime import datetime, date, time
from sqlalchemy.dialects import postgresql
from sqlalchemy.schema import ForeignKey
from sqlalchemy.ext.declarative import declared_attr, declarative_base
from core.database.dbmanager import DBManager
db = DBManager.get_db_instance()
class Base(object):
"""A model which functions as a basic model for other models.
Adds the id property to other models.
"""
id = db.Column(db.Integer, primary_key=True, nullable=False)
def __init__(self):
super(Base, self).__init__()
Base = declarative_base(cls=Base)
审核模型.py
from core.models.base.basemodel import db, postgresql, declared_attr, ForeignKey, datetime, Base
class Auditable(Base):
"""A model which functions as an auditable model for other models.
Adds the created_by_id, created_by and creation_time properties to other models.
"""
__abstract__ = True
@declared_attr
def created_by_id(cls):
return db.Column(db.Integer, ForeignKey('Users.id'), nullable=False)
@declared_attr
def created_by(cls):
return db.relationship('UserModel', lazy='select', foreign_keys=[cls.created_by_id])
@declared_attr
def creation_time(cls):
return db.Column(db.DateTime, nullable=False, default=datetime.now())
def __init__(self):
super(Auditable, self).__init__()
审核的deletemodel.py
from core.models.base.auditedmodel import db, postgresql, declared_attr, ForeignKey, Auditable
class AuditedDeletable(Auditable):
"""A model which functions as an auditeddeletable model for other models.
Adds the is_deleted properties to other models.
"""
__abstract__ = True
@declared_attr
def is_deleted(cls):
return db.Column(db.Boolean, nullable=False, default=False)
def __init__(self):
super(AuditedDeletable, self).__init__()
可能是由于名为user_type的属性与正在执行的构造函数中的冲突问题导致的“self.user_类型=user_type“将覆盖此
相关问题 更多 >
编程相关推荐