Python 3.x 烧瓶回溯返回空列表

Python 3.x 烧瓶回溯返回空列表,python-3.x,flask,flask-sqlalchemy,Python 3.x,Flask,Flask Sqlalchemy,我确实问过这个问题,但我会再问一遍,因为我没有得到任何回应 我正在开发一个简单的flask应用程序,其中包含项目和票证表,它们如下所示 class Projects(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable = False) description = db.Column(db.Text, nullable = False) created_

我确实问过这个问题,但我会再问一遍,因为我没有得到任何回应

我正在开发一个简单的flask应用程序,其中包含项目和票证表,它们如下所示

class Projects(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable = False)
description = db.Column(db.Text, nullable = False)
created_by_id = db.Column(db.Integer, nullable = False)
expert_id = db.Column(db.Integer, db.ForeignKey('users.id'))

def __repr__(self):
    return f"{self.title}"


class Tickets(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    title = db.Column(db.String(100),nullable=False)
    ticket_text = db.Column(db.Text,nullable=False)
    date_posted = db.Column(db.DateTime,nullable=False,default=datetime.utcnow)
    created_by_id = db.Column(db.Integer, nullable=False)
    expert_id = db.Column(db.Integer, db.ForeignKey('users.id'),nullable=False)
    project_id = db.Column(db.Integer, db.ForeignKey('projects.id'),nullable=False)
    projects = db.relationship('Projects', backref='ticketso', lazy=True)

    def __repr__(self):
        return f"Tickets('{self.title}','{self.date_posted}')"
基本上这是一个项目可以有很多票,但当我查询它

  @app.route('/project/<project_id>')
  def project(project_id):
  project = Projects.query.get_or_404(project_id)
  return render_template('project.html',title=project.title, project=project)
编辑: 我将以不同的方式问这个问题,以便弄清楚

class Person(db.Model):
   id = db.Column(db.Integer, primary_key=True)
   name = db.Column(db.String(50), nullable=False)
   addresses = db.relationship('Address', backref='person', lazy=True)

class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), nullable=False)
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'),
        nullable=False)
上面的代码是我从flask文档中获得的

它说

backref is a simple way to also declare a new property on the Address class. You can then also use my_address.person to get to the person at that address
所以我可以访问
地址中的
,但是我们如何访问
拥有的
地址列表。因为它是一对多关系,这意味着一个人可以有多个地址,对吗?我们如何访问它们?

您需要在两个表之间进行“连接”。创建行时不需要定义
expert\u id
。相反,您需要通过设置的
backref
指向
Tickets
表。 换行

project = Projects(title = form.title.data, description = form.description.data, created_by_id = current_user.username, expert_id = str(form.user_id.data))
为此:

project = Projects(title = form.title.data, description = form.description.data, created_by_id = current_user.username, ticketso=form)
假设
form
是要指向的Tickets对象。然后,您就可以使用
expert\u ID

基本上,这一行
projects=db.relationship('projects',backref='ticketso',lazy=True)
在您设置的表中创建一个“虚拟列”。在本例中是
项目
表(您也可以使用关系列从
票证
访问
项目
表)。这两列也没用。我想你知道如何在没有它们的情况下访问数据

expert_id = db.Column(db.Integer, db.ForeignKey('users.id'),nullable=False)
project_id = db.Column(db.Integer, db.ForeignKey('projects.id'),nullable=False)

我很困惑。。。你想干什么?你想找哪一列?您正试图通过用户的
项目
查找用户的
票证
?您能告诉我们如何向表中添加新对象吗?@Patch我正在查找分配给project@Patch,谢谢我已经更新了问题,请检查一下好的,你在哪里添加项目?我做的一切都和你上面展示的一模一样。在project.html中,我使用jinja显示票证列表:{{project.ticketso},它仍然给我空列表。我也尝试过{{project.ticketso.title}仍然没有结果。我使用的是expert_id,因为要获得与用户的关系,expert_id是分配了票证的用户。这与项目无关,我已经在“编辑”之后更新了我的帖子,可能是我对这个问题不清楚,请看一看,也许这就是问题所在clear@MuhammedTech我没有看到分配票据的用户。您可以通过打印
ticket\u obj.projcets
来访问票证拥有的项目列表。在
procjets
中创建一个
expert\u tick=db.Column(db.Integer,db.ForeignKey('tickets.id'))
列,它应该可以工作。我相信会工作的,我现在就试试。然而,这将是一种什么样的关系?我们不是在“多”端使用db.ForeignKey吗?在我的例子中,它是“Tickets”,并且已经有了project_id=db.Column(db.Integer,db.ForeignKey('projects.id'),nullable=False),现在如果我在project上添加一个新的db.Column(db.Integer,db.ForeignKey('Tickets.id')),它还会是一对多关系吗?
project = Projects(title = form.title.data, description = form.description.data, created_by_id = current_user.username, ticketso=form)
expert_id = db.Column(db.Integer, db.ForeignKey('users.id'),nullable=False)
project_id = db.Column(db.Integer, db.ForeignKey('projects.id'),nullable=False)