python-3.x - flask-sqlalchemy 中有没有办法使可继承的属性成为外键?
问题描述
from app import db
from app import Bcrypt
#all users in the database
class User(db.Model):
user_name = db.Column(db.String(30), primary_key=True, unique=True, nullable=False)
password_hash = db.Column(db.String(30), unique=False, nullable=False)
_title = db.Column(db.String(30), unique=False, nullable=False)
team_name = db.Column(db.String(30), unique=False, nullable=False)
dep_name = db.Column(db.String(30), unique=False, nullable=False)
_active = db.Column(db.Boolean, unique=False, nullable=False, default=1)
_permission = db.Column(db.String(30), unique=False, nullable=False, default="USER")
owner=db.relationship('Employee', backref='owned_user', lazy=True)
#getter
@property
def password(self):
return self.password
#setter
@password.setter
def password(self, plain_text_password):
self.password_hash = Bcrypt.generate_password_hash(plain_text_password).decode('utf-8')
def __repr__(self):
return "<User(name='%s', title='%s', team='%s', dep='%s', active='%s', permission='%s')>" % (self.usr_name, self.usr_email)
#employee in shift
class Employee(User):
_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
emp_name = db.Column(db.String(30), db.ForeignKey('user.user_name'))
shifts_options = db.Column(db.Integer(), unique=False, nullable=False)
shifts_amount = db.Column(db.Integer(), unique=False, nullable=False)
count_shabbat = db.Column(db.Integer(), unique=False, nullable=False)
shift = db.relationship('Shift', backref='owned_employee', lazy=True)
#specific shift
class Shift(db.Model):
#add each shift an id: date + shift name: 01/07/21SundayMorning
_id = db.Column(db.String(30), primary_key=True, unique=True, nullable=False)
_date = db.Column(db.Date(), primary_key=True, unique=False, nullable=False)
day_name = db.Column(db.String(length=30), nullable=False, unique=False)
shift_type = db.Column(db.String(length=30), nullable=False, unique=False)
owners_emp = db.Column(db.String(30), db.ForeignKey('employee.user_name'))
def __repr__(self):
return f'Shift{self.name}'
我收到此错误:
引发 exc.NoReferencedColumnError(sqlalchemy.exc.NoReferencedColumnError:无法初始化表 'shift' 上 ForeignKey 'employee.user_name' 的目标列:表 'employee' 没有名为 'user_name' 的列
解决方案
推荐阅读
- machine-learning - Pytorch 自定义模型自动存储在 cuda 中
- linq - .NET Core 的 SQL 转换为 Linq 转换
- python - 如何禁用第二个窗口?
- swift - 在 SwiftUI 中,如何在视图中分配变量?
- awk - 如何使用 AWK 在 linux 中重新格式化文件,打印
- javascript - ReactJS 表单提交
- mysql - 如何构建查询以获取每个用户的最新行,其中第三个条件位于单独的表中?
- r - 创建一个表,显示为序列评估的函数
- ios - 在 iO 上出现 stylelint 错误 - 错误:找不到“stylelint-config-standard”。你需要一个`configBasedir`吗?
- spring - Quarkus 中新 bean 实例的自定义修改