我正在为我的Flask-Application编写Database-Code,虽然我的大部分代码都没有问题,但有一个关联表我无法工作而且我的想法已经用完如何解决它
任务描述:我有两个表 - “组”和“门票”(如任务) - 我想用N:M-Relationship连接。但是,我希望此关系包含一些其他信息(例如:它需要包含有关票证是否已由组完成的信息)。 另外,我想访问一个群组的门票(反之亦然),如下所示:
for t in group_one.tickets:
print t.name
或
some_ticket.groups.append(a_ticket)
我按照SQLAlchemy文档(http://docs.sqlalchemy.org/en/rel_0_7/orm/relationships.html#association-object)尝试了它,但它只导致以下错误消息:
“无法确定关系Ticket.groups上父/子表之间的连接条件。指定'primaryjoin'表达式。如果'secondary'存在,则还需要'secondaryjoin'。”
在我试图让它运行时,我尝试了一些代码。目前它看起来像这样:
class Ticket(db.Model):
__tablename__ = "Ticket"
id = db.Column(db.Integer, primary_key=True)
groups = db.relationship("Group", secondary = "TicketForGroup", backref="Ticket")
class Group(db.Model):
__tablename__ = "Group"
id = db.Column(db.Integer, primary_key=True)
tickets = db.relationship("Ticket", secondary = "TicketForGroup", backref="Group")
class TicketForGroup(db.Model):
__tablename__ = "TicketForGroup"
ticket_id = db.Column(db.Integer, db.ForeignKey(Ticket.id), primary_key="True")
ticket = db.relationship("Ticket", backref="TicketForGroup", primaryjoin = ticket_id == Ticket.id)
group_id = db.Column(db.Integer, db.ForeignKey(Group.id), primary_key="True")
group = db.relationship("Group", backref="TicketForGroup", primaryjoin = group_id == Group.id)
is_closed = db.Column(db.Boolean, default=False)
但是当我尝试访问数据时唯一回来的是“AttributeError:type object'TicketForGroup'没有属性'foreign_keys'”。 毋庸置疑,我现在有点迷失,所以对我做错了什么以及如何做对的任何帮助都将不胜感激。
问候, MT