gpt4 book ai didi

python - Flask-SQLAlchemy 一对多关系找不到名称

转载 作者:行者123 更新时间:2023-12-03 16:16:23 32 4
gpt4 key购买 nike

我有一个带有 Flask-SQLAlchemy 的 Flask 应用程序。我正在尝试建立从用户到旅行的一对多关系。我看到了,如果我使用 SQLAlchemy 的 declarative_base 它可以工作,但是当我使用 Flask-SQLAlchemy 中的 db.Model 时它不起作用。

我收到以下错误:

sqlalchemy.exc.InvalidRequestError: When initializing mapper Mapper|User|User, expression 'Trip' failed to locate a name ("name 'Trip' is not defined"). If this is a class name, consider adding this relationship() to the <class 'models.user.User'> class after both dependent classes have been defined.

以下是模型:

数据库.py
from flask import abort 
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import exc

db = SQLAlchemy()


class Mixin(db.Model):
__abstract__ = True
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.DateTime, default=db.func.now())
date_changed = db.Column(
db.DateTime, nullable=True, onupdate=db.func.now())
date_to = db.Column(db.DateTime, nullable=True)

用户.py
from database import Mixin, db

class User(Mixin, db.Model):
__tablename__ = 'User'
trips = db.relationship(
'Trip',
backref=db.backref('user', lazy='joined'),
lazy='dynamic'
)

旅行.py
from database import Mixin, db

class Trip(Mixin, db.Model):
__tablename__ = 'Trip'
title = db.Column(db.String(100), nullable=False)
description = db.Column(db.String(250), nullable=False)
user_id = db.Column(
db.Integer,
db.ForeignKey('User.id'),
nullable=False
)

最佳答案

将所有模型存储在一个文件中是一个好主意,但仅适用于少数模型。对于大的,我更愿意将模型存储在语义独立的文件中。

models
├── __init__.py
├── model1.py
├── model2.py
└── model3.py

__init__.py需要导入所有模型文件
import models.model1.py
import models.model2.py
import models.model3.py

关于python - Flask-SQLAlchemy 一对多关系找不到名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44977016/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com